gpt4 book ai didi

performance - 有效的代码检测?

转载 作者:行者123 更新时间:2023-12-02 21:51:23 26 4
gpt4 key购买 nike

我经常阅读有关某些新框架及其“基准”的声明。我的问题是一个一般性问题,但具体如下:

  1. 开发人员应采取什么方法来有效地检测代码以衡量性能?

  2. 在阅读基准测试和性能测试时,需要注意哪些可能并不代表真实结果的危险信号?

最佳答案

有两种衡量性能的方法:使用代码检测和使用采样。

我过去使用的商业分析器(Hi-Prof、Rational Quantify、AQTime)使用了代码检测(其中一些还可以使用采样),根据我的经验,这给出了最好、最详细的结果。特别是 Rational Quantity 允许您放大结果、关注子树、删除完整的调用树以模拟改进,...

这些仪器分析器的缺点是:

  • 往往很慢(您的代码运行速度大约慢 10 倍)
  • 需要花费相当多的时间来检测您的应用程序
  • 并不总是正确处理应用程序中的异常(在 C++ 中)
  • 如果您必须禁用 DLL 的检测(我们必须禁用 Oracle DLL 的检测),则可能很难设置

检测有时还会扭曲低级函数(如内存分配、关键部分等)报告的时间

我使用的免费分析器(Very Sleepy,Luke Stackwalker)使用采样,这意味着可以更轻松地进行快速性能测试并查看问题所在。这些免费分析器不具备商业分析器的全部功能(尽管我自己为 Very Sleepy 提交了“关注子树”功能),但由于它们速度很快,因此非常有用。

目前,我个人最喜欢的是《非常困》,卢克·斯塔克沃克位居第二。

在这两种情况(仪器和采样)中,我的经验是:

  • 比较分析器在不同版本的应用程序上的结果非常困难。如果您的 2.0 版本存在性能问题,请分析您的 2.0 版本并尝试改进它,而不是寻找 2.0 比 1.0 慢的确切原因。
  • 您绝不能将分析结果与在分析器外部运行的应用程序的计时(实时、CPU 时间)结果进行比较。如果您的应用程序在分析器之外消耗了 5 秒的 CPU 时间,而在分析器中运行时,分析器报告它消耗了 10 秒,则没有任何问题。不要认为您的应用程序实际上需要 10 秒。
  • 这就是为什么您必须在同一环境中持续检查结果的原因。在探查器外部运行或在探查器内部运行时,一致地比较应用程序的结果。不要混淆结果。
  • 还使用一致的环境和系统。如果您拥有更快的 PC,您的应用程序仍然可能运行得更慢,例如因为屏幕更大,屏幕上需要更新的东西也更多。如果转移到新电脑,请在新电脑上重新测试应用程序的最后(一个或两个)版本,以便您了解时间如何适应新电脑。
  • 这也意味着:使用固定数据集并检查您对这些数据集的改进。应用程序的改进可能会提高数据集 X 的性能,但会降低数据集 Y 的性能。在某些情况下,这可能是可以接受的。
  • 事先与测试团队讨论您希望获得什么结果(请参阅 Oded 对我自己的问题的回答 What's the best way to 'indicate/numerate' performance of an application?)。
  • 要认识到,如果较快的应用程序使用多线程而较慢的应用程序不使用多线程,则较快的应用程序仍然可以比较慢的应用程序使用更多的 CPU 时间。与测试时间讨论(如前所述)什么需要测量,什么不需要测量(在多线程情况下:实时而不是 CPU 时间)。
  • 认识到许多小改进可能会带来一项大改进。如果您发现应用程序中有 10 个部分,每个部分花费 3% 的时间,并且您可以将其减少到 1%,那么您的应用程序将会快 20%。

关于performance - 有效的代码检测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2345081/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com