我正在开发一个项目,需要进行性能优化。
如何编写一个测试,如果我的优化没有提高程序的速度,测试将失败?
具体来说:
问题不在于发现哪些部分需要优化。我可以使用各种性能剖析和基准测试工具来解决这个问题。
问题在于如何使用自动化测试来记录特定优化确实产生了预期的效果。如果我能使用测试套件在以后发现可能的性能回归,那将非常理想。
我想,我可以运行我的性能剖析工具以获得一些值,然后断言我的优化代码生成更好的值。然而,明显的问题是基准测试的值不是硬性数值,会随着本地环境的变化而变化。
所以,答案是总是使用同一台机器来进行这种集成测试吗?如果是这样,您仍然需要允许结果有一定的模糊性,因为即使在相同的硬件上,基准测试结果也可能不同。那么如何考虑这一点呢?
或者,也许答案是保留旧版本的程序,并比较前后的结果?这是我首选的方法,因为它大多数情况下不受环境影响。有没有人用过这种方法?我想,如果所有测试都可以通过,那么只需要保留一个旧版本,如果最新版本的性能至少与旧版本相同。