设计库性能比较测试

Nix*_*Nix 6 c# testing performance

我正准备对各种货架产品进行一系列性能比较.

为了在测试中表现出可信度,我需要做些什么?如何设计基准测试以使其受到尊重?

我也对测试的实际设计有任何建议.在不影响测试的情况下加载数据的方法(海森堡不确定性原理),或监控方法......等

nit*_*ins 3

在不知道您要评估哪种“现成”产品的情况下,回答这个问题有点棘手。您是否正在寻找 UI 响应能力、吞吐量(例如电子邮件、事务/秒)、启动时间等 - 所有这些对于您应该跟踪的衡量标准以及用于测试或评估的不同工具都有不同的标准。但要回答您的一些一般性问题:

  1. 信誉——这很重要。尝试确保您所测量的任何内容都几乎没有运行差异。利用对同一场景进行多次运行的技术,消除异常值(即最低和最高),并评估平均/最大/最小/中值。如果您正在进行某种吞吐量测试,请考虑使其长时间运行,以便获得良好的样本集。例如,如果您正在查看 Microsoft Exchange 之类的东西,因此正在使用其性能计数器,请尝试确保您频​​繁采样(每秒一次或每隔几秒一次),并让测试运行 20 分钟左右。再次,切断前几分钟和最后几分钟的声音,以消除任何启动/关闭噪音。

  2. 海森堡——棘手。在大多数现代系统中,根据您正在测量的应用程序/测量方式,您可以通过明智地了解测量内容/测量方式来最大程度地减少这种影响。有时(例如在 Exchange 示例中),您会看到几乎为 0 的影响。尝试尽可能使用侵入性最小的工具。例如,如果您正在测量启动时间,请考虑使用xperfinfo并利用内核中内置的事件。如果您使用 perfmon,请不要用您不关心的无关计数器淹没系统。如果您正在进行一些非常长时间的运行测试,请逐渐缩短采样间隔。

还要尝试消除任何环境变化源或可能的噪音源。如果您正在执行网络密集型操作,请考虑隔离网络。尝试禁用任何您不关心的服务或应用程序。限制任何类型的磁盘 IO、内存密集型操作等。如果磁盘 IO 可能会在受 CPU 限制的情况下引入噪音,请考虑使用 SSD。

设计测试时,请牢记可重复性。如果您进行某种微基准类型测试(例如性能单元测试),那么让您的基础设施支持运行相同的操作 n 次完全相同。如果您正在驱动 UI,请尽量不要物理驱动鼠标,而是使用底层辅助功能层(MSAA、UIAutomation 等)以编程方式直接点击控件。

再次强调,这只是一般建议。如果您有更多具体信息,那么我可以尝试跟进更多相关指导。

享受!