Performance 性能提升有多少值得/值得注意?

Performance 性能提升有多少值得/值得注意?,performance,survey,Performance,Survey,对于何时何地提高性能,每个人都有自己的看法,所以这里不感兴趣,但我想知道性能提高在什么时候值得推广(比如从分支开发到主干,或者足够放在某个进度报告或其他内容上) 例如,我的经验法则是10%的性能提升是值得注意的,但5%并没有什么特别之处(当然,加起来它们可能是值得的) 注意:由于这个维基没有正确的答案,但我确实觉得在做出关于性能的决定时,对这个问题发表意见是有用的。对于大n的算法改进非常好。我认为这也取决于代码的优雅性/可读性。如果某个特定的更改感觉像是一个更正确的解决方案,消除了代码中的一些愚

对于何时何地提高性能,每个人都有自己的看法,所以这里不感兴趣,但我想知道性能提高在什么时候值得推广(比如从分支开发到主干,或者足够放在某个进度报告或其他内容上)

例如,我的经验法则是10%的性能提升是值得注意的,但5%并没有什么特别之处(当然,加起来它们可能是值得的)


注意:由于这个维基没有正确的答案,但我确实觉得在做出关于性能的决定时,对这个问题发表意见是有用的。对于大n的算法改进非常好。

我认为这也取决于代码的优雅性/可读性。如果某个特定的更改感觉像是一个更正确的解决方案,消除了代码中的一些愚蠢之处,那么如果它还提高了性能,那么它是“值得的”。然而,如果一个特定的更改纯粹是为了性能而设计的,并且降低了代码的可读性或可维护性,那么它最好是一个相当好的提升,使它有价值。。。大概50%。

我宁愿使用绝对值。1毫秒的20%不是你所关心的。但是2%的小时是非常令人印象深刻的。

如果性能的提高为系统增加了新的质量,那么值得一提。否则通常没人关心

例如,如果系统在加载合理但高于正常数量的数据时工作速度明显较慢,并且您已经解决了此问题,那么值得一提的是,因为加载大量数据的用户将从改进中受益。

这取决于您的情况

如果将这5%转化为节省的资金,例如在大型服务器场上,这将是值得注意的

如果在终端用户的计算机上速度快5%,谁都不会注意到,那么就不会了。

这取决于上下文

在一个需要实时播放视频的应用程序中,每帧1毫秒的改进可以是每秒30帧(这是视频剪辑的常见速率)到每秒29帧(这在视觉上会因为掉帧而变得更糟)之间的差异


在另一个夜间运行的应用程序中,两个小时与三个小时可能不会产生任何实际差异(但运行时对数据库造成的负载可能非常大—请对此进行优化!)。

基本上是指对于一个完整的工作单元而言,这是一个数量级或更好的负载

  • 小时到分钟的批处理过程
  • 分到秒用户触发的批处理、安装、生成
  • 秒到秒用户触发的进程
  • 第二种是即时用户触发的进程

    • 这里有一个简单的测试:给某人一个未优化的系统,让他们使用它。给他们优化的系统,让他们使用它。询问他们是否能分辨出两者的区别,以及他们最喜欢哪一种。(确保这是一个双盲测试,并且系统在其他方面是相等的)。如果人们更喜欢优化后的系统,那就值得大吵大闹了


      这里有一个更简单的测试:你能分辨出区别吗?如果你不能,那就不值得一提了。(另一方面,小的改进会累积)。

      在斐波那契堆中,有O(1)decreaseKey,而在二进制堆(存储在数组中)中有O(logn)。根据我的实验,这在实践中一点都不重要:yeolde二进制堆甚至在相当大的n上也优于fib堆。原因:fib堆有一个巨大的常数因子。