在我们的项目,我们正在试图自动监控测试运行的性能,以确保我们没有在程序随时间的性能有任何显著的变化。
问题是,似乎是在我们拿到的措施一致的5%的变化。 也就是说,同一台机器上使用相同的程序(无需重新编译)运行相同的测试,我们得到的是5%左右不同于运行运行值上。 这是太多了,我们要使用的号码是什么。
我们已经从时序考虑排除设置成本 - 也就是说,从C ++代码本身我们之前抓住了时间和运行时间的关键部分,而不是在操作系统级别做整个程序的时间后, 。 我们也做平均和异常排斥。 问题是,变异看起来也有长期趋势,所以我们之后对方获得重复的时间紧簇,但是一两个小时后的时间基本相同。 (遗憾的是,出于传播测试在几个小时内是不可行的。)测试也正在一个专用的机器上运行,而“没有别的”正在运行就可以了。
我们不太肯定的时序变化是从哪里来的,但它可能与处理器和系统的事 - 有该变异的大小取决于程序运行在什么机器迹象。
有没有人有一个想法,其中这种变化很可能是来自何处,以及如何去除呢? 这些测试专用的机器上运行,所以更改操作系统设置将是可能的。
(由标签表示,这是一个x86的Linux系统上运行的C ++程序,如果这能帮助澄清的事情。)
编辑:回应评论
我们目前的时机方案是使用时钟()函数从C标准库,从之前看在返回值的差额/功能后,我们要测试的。
我们正在测试的代码应该是确定的,而不应涉及强IO。
我知道的情况是“银弹”的回答有点模糊。 我想我更多寻找“这些都是重要的考虑因素,这是为了你应该检查他们,这里是你如何去检查他们每个人”式的答案。