每个人对何时何地提高性能都有自己的看法,所以这里不感兴趣,但我想知道性能提升在什么时候变得值得提升(比如从分支开发到主干,或者足以放在一些进展上报告或其他)。
例如,我的经验法则是 10% 的性能提升是值得注意的,但 5% 并没有什么特别之处(当然加起来它们可能是值得的)
注意:由于没有标记此 wiki 的正确答案,但我确实觉得在做出关于性能的决定时对这个主题有意见很有用
每个人对何时何地提高性能都有自己的看法,所以这里不感兴趣,但我想知道性能提升在什么时候变得值得提升(比如从分支开发到主干,或者足以放在一些进展上报告或其他)。
例如,我的经验法则是 10% 的性能提升是值得注意的,但 5% 并没有什么特别之处(当然加起来它们可能是值得的)
注意:由于没有标记此 wiki 的正确答案,但我确实觉得在做出关于性能的决定时对这个主题有意见很有用
我宁愿使用绝对值。1 毫秒的 20% 不是你关心的。但是一个小时的 2% 是相当可观的。
如果提高的性能为系统增加了新的质量,那么值得一提。否则通常没人关心。
例如,如果系统在加载合理但高于正常数量的数据时工作明显变慢,并且您已经解决了这个问题,那么值得一提的是,那些加载大量数据的用户将从改进中受益。
大 n 的 O(n) 到 O(log n) 算法改进非常好。
我认为这也取决于代码的优雅/可读性。如果一个特定的改变感觉像是一个更正确的解决方案,消除了代码中的一些愚蠢,那么如果它也提高了性能,那么它是“值得的”。但是,如果某个特定更改纯粹是为了性能而设计的,并且会降低代码的可读性或可维护性,那么最好是一个很好的提升,使其值得......也许是 50%。
这是一个简单的测试:给某人未优化的系统并要求他们使用它。给他们优化的系统并要求他们使用它。询问他们是否能分辨出不同之处,以及他们最喜欢哪个。(确保这是一个双盲测试,并且系统在其他方面是平等的)。如果人们更喜欢优化后的系统,那就值得一提。
这是一个更简单的测试:你能分辨出区别吗?如果不能,那就不值一提了。(另一方面,小的改进会累积)。
这取决于。
如果这 5% 转化为节省的钱,例如在大型服务器场上,那将是值得注意的。
如果它在最终用户的计算机上快 5%,甚至不会注意到,那么就不会。
这取决于上下文。
在需要实时播放视频的应用程序中,每帧 1 毫秒的改进可能是每秒 30 帧(这是视频剪辑的常见速率)到每秒 29 帧(看起来 - 视觉 - 很多)之间的差异由于丢帧而更糟)。
在另一个通宵运行的应用程序中,两小时与三小时可能不会产生任何实际差异(但在运行时对数据库造成的负载可能非常重要 - 而是优化它!)。
基本上,对于一个完整的工作单元来说,它是一个数量级或更好的数量级。