如何查看代码的哪些部分最常运行?


11

我希望能够看到成千上万行源代码中的哪些代码运行最频繁且花费时间最长。这样做的目的是为了优化。

能够看到最常运行的代码部分对于优化很重要,因为这些部分是我应该集中精力来加快速度的地方。当然,与此同时,某些代码经常运行,但是几乎不需要时间,因此能够看到哪些代码花费的时间也很重要。

我猜这两个方面最好的是一个程序,该程序可以将一段代码加起来的时间加起来,包括运行该代码的所有时间(从而弄清楚什么会使您的代码整体上最慢)。是否有一种用于此的工具?


您是否偏爱操作系统或编程语言?
Mawg说恢复Monica

Answers:


15

您正在寻找的是剖析

在软件工程中,性能分析(“程序性能分析”,“软件性能分析”)是一种动态程序分析形式,可以测量例如程序的空间(内存)或时间复杂度,特定指令的使用情况,频率和函数调用的持续时间。分析信息最常见的用途是帮助程序优化。

有几种这样的应用程序。有时,它们内置在IDE本身中。netbeans ide是其中一种内置了探查器的工具。 在此处输入图片说明

另一个这样的工具是visual vm

在此处输入图片说明

探查器可以以不同的方式工作-人们应该意识到差异。一种方法是每秒对正在运行的线程进行快照,并查看当前正在为每个线程调用哪些方法。这将使用其中的样本。

另一种方法是检测Java字节码,以将启动和停止时间报告给另一个应用程序。

对于一个熟练的Java来说,编写一个探查器并不困难。IBM有一篇有关编写自己的探查器的文章(带有源代码!)。这是基于Java Interactive Profiler的

有大量的探查器-免费和商业的探查器(探查器连接到正在运行的JVM实例,当特定方法超出预期运行时间时可以向您报告(电子邮件或其他通知)吗?程序,该请求会在Web请求花费太长时间时向后报告-是否保存了该请求的历史资料以便以后检查?)。您只需要知道您要寻找的内容就可以开始找到它们并从那里去。

有了分析器后,就可以解释分析结果了

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.