为了账号安全,请及时绑定邮箱和手机立即绑定

人们可以使用分析器,但为什么不干脆停止程序呢?

人们可以使用分析器,但为什么不干脆停止程序呢?

人们可以使用分析器,但为什么不干脆停止程序呢?如果某个东西使一个单线程程序花费的时间是它的10倍,你可以在它上运行一个分析器。你也可以用一个“暂停”按钮来停止它,你会看到它到底在做什么。即使它比应该的速度慢了10%,如果你停了更多次,不久你就会看到它重复地做着不必要的事情。通常情况下,问题在于堆栈中间某个不需要的函数调用。这不能衡量问题,但它确实找到了问题。编辑:反对意见大多假设你只拿了一个样本。如果你是认真的,吃10。造成一定百分比浪费的代码行,如40%,平均会出现在该部分样本上的堆栈上。瓶颈(在单线程代码中)无法隐藏。编辑:为了表明我的意思,很多反对意见都是“没有足够的样本,所以你看到的可能是完全虚假的”-关于机会的模糊想法。但如果说任何可识别的描述,不只是在例行公事或日常活动中,在30%的时间内有效,那么在任何一个样本上看到它的概率都是30%。然后假设只采集了10个样本。问题在10个样本中出现的次数如下二项分布,看到0次的概率是.028。一次看到它的概率是.121。2次,概率是.233,3次是.267,然后掉下来。因为小于两次的概率是.028+.121=.139,这意味着看到它的概率是1-.139=.861。一般的规则是,如果您看到的东西,您可以修复两个或更多的样本,这是值得的。在这种情况下,在10个样本中看到它的机会是86%。如果你在14%的人谁没有看到它,只需采取更多的样本,直到你这样做。(如果样本数量增加到20个,则两次或两次以上的机会增加到99%以上。)所以它还没有被精确的测量,但是它已经被精确的发现了,这一点很重要,因为它可以很容易地被分析器发现,比如涉及数据状态的东西,而不是程序计数器。
查看完整描述

3 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

在Java服务器上,快速执行2-3一直是一个巧妙的技巧。克特-断断续续S在一行中,得到所有正在运行的线程的2-3个线程转储。简单地查看所有线程“在”的位置,可能会非常迅速地找到您的性能问题所在。

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


查看完整回答
反对 回复 2019-06-14
?
料青山看我应如是

TA贡献1772条经验 获得超7个赞

因为有时它有效,有时它给出了完全错误的答案。分析器在找到正确答案方面的记录要好得多,而且它通常能更快地到达那里。


查看完整回答
反对 回复 2019-06-14
?
红糖糍粑

TA贡献1815条经验 获得超6个赞

因为有时它有效,有时它给出了完全错误的答案。分析器在找到正确答案方面的记录要好得多,而且它通常能更快地到达那里。


查看完整回答
反对 回复 2019-06-14
  • 3 回答
  • 0 关注
  • 484 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信