gpt4 book ai didi

performance - 人们可以使用分析器,但为什么不直接停止程序呢?

转载 作者:行者123 更新时间:2023-12-03 01:16:30 25 4
gpt4 key购买 nike

如果某件事导致单线程程序花费的时间是其应有的时间的 10 倍,您可以在其上运行分析器。您也可以使用“暂停”按钮来停止它,然后您就会清楚地看到它在做什么。

即使它只比应有的速度慢 10%,如果你停止它的次数更多,不久你就会看到它重复地做不必要的事情。通常问题是堆栈中间某个地方的函数调用,但实际上并不需要。这并不能衡量问题,但它确实能找到问题。

编辑:反对意见大多假设您只采集了 1 个样本。如果您很认真,请选择 10 行。平均而言,导致一定百分比浪费(例如 40%)的任何代码行都会出现在该部分样本的堆栈上。瓶颈(在单线程代码中)无法隐藏。

编辑:为了表达我的意思,许多反对意见的形式都是“没有足够的样本,所以你所看到的可能完全是虚假的”——关于机会的模糊想法。但是,如果某种任何可识别的描述(不仅仅是处于例行程序中或例行程序处于事件状态)在 30% 的时间内有效,那么在任何给定样本上看到它的概率就是 30% 。

然后假设只采集 10 个样本。 10 个样本中出现该问题的次数遵循 binomial distribution ,看到它 0 次的概率是 0.028。看到它 1 次的概率是 0.121。 2次的概率是0.233,3次的概率是0.267,之后就掉下来了。由于看到它少于两次的概率为 0.028 + .121 = .139,这意味着看到它两次或两次以上的概率为 1 - .139 = .861。一般规则是,如果您发现可以在两个或更多样本上修复某些问题,那么它就值得修复。

在这种情况下,在 10 个样本中看到它的几率是 86%。如果您是那 14% 的人中没有看到这一点的人,只需采取更多样本,直到您看到为止。 (如果样本数量增加到20个,看到它两次或两次以上的机会就会增加到99%以上。)所以它还没有被精确测量,但它已经被精确发现了,重要的是要理解这一点它很可能是探查器实际上无法找到的东西,例如涉及数据状态的东西,而不是程序计数器。

最佳答案

在 Java 服务器上,连续执行 2-3 次快速 Ctrl-中断 一直是一个巧妙的技巧,并获取所有正在运行的线程的 2-3 个线程转储。只需查看所有线程“所在”位置就可以非常快速地查明性能问题所在。

与我所知道的任何其他技术相比,该技术可以在 2 分钟内揭示更多的性能问题。

关于performance - 人们可以使用分析器,但为什么不直接停止程序呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/266373/

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