我正准备对各种货架产品进行一系列性能比较。
我需要做些什么才能在测试中表现出可信度?如何设计我的基准测试以使它们受到尊重?
我也对测试的实际设计有任何建议。在不影响测试的情况下加载数据的方法(海森堡不确定性原理),或监控方法等等
答案 0 :(得分:3)
如果不知道您想要评估什么样的“现成”产品,这有点难以回答。您是在寻找UI响应,吞吐量(例如电子邮件,事务/秒),启动时间等 - 所有这些都有不同的标准,您应该跟踪哪些措施以及用于测试或评估的不同工具。但要回答一些一般性问题:
可信度 - 这很重要。尽量确保无论你测量的是什么都没有运行差异。利用相同场景的多次运行技术,摆脱异常值(即最低和最高),并评估你的平均值/最大值/最小值/中值。如果您正在进行某种吞吐量测试,请考虑使其长时间运行,以便您拥有良好的样本集。例如,如果您正在查看类似Microsoft Exchange的内容并因此使用其perf计数器,请尝试确保您经常采样(每秒或每几秒一次)并让测试运行20分钟左右。再次,切断前几分钟和最后几分钟,以消除任何启动/关闭噪音。
海森堡 - 很棘手。在大多数现代系统中,根据您测量的应用/测量,您可以通过智能测量您的测量来最小化这种影响。有时候(比如在Exchange示例中),您会看到接近0的影响。尽量使用尽可能少的侵入性工具。例如,如果您正在测量启动时间,请考虑使用xperfinfo并利用内核中内置的事件。如果您正在使用perfmon,请不要使用您不关心的无关计数器来充斥系统。如果您正在进行一些极长的运行测试,请缩短采样间隔。
还尝试消除任何环境变化的来源或可能的噪音源。如果您正在进行网络密集型操作,请考虑隔离网络。尝试禁用您不关心的任何服务或应用程序。限制任何类型的磁盘IO,内存密集型操作等。如果磁盘IO可能会在CPU绑定的情况下引入噪声,请考虑使用SSD。
在设计测试时,请记住重复性。如果您进行某种微基准测试类型测试(例如,执行单元测试),那么让您的基础架构支持运行相同的操作n次完全相同。如果您正在驾驶UI,请尝试不要物理驱动鼠标,而是使用底层辅助功能层(MSAA,UIAutomation等)以编程方式直接命中控件。
同样,这只是一般建议。如果您有更多细节,那么我可以尝试跟进更多相关指导。
享受!
答案 1 :(得分:1)
你的问题非常有趣,但有点模糊,因为不知道测试什么并不容易给你提供一些线索。
您可以从多个不同的角度测试性能,然后,根据库的用途或目标,您应该尝试一种方法或另一种方法;我将尝试列举您可能需要考虑的一些测量事项:
工具:
答案 2 :(得分:0)
为什么你关心表现?在这两种情况下,将消息写入存储日志的位置所花费的时间将比其他任何内容慢得多。
如果您真的在进行匹配日志记录,那么您可能需要索引日志文件,以便找到所需的日志条目,此时您没有进行标准日志记录。