【问题标题】:measuring a java program runtime using asm Instrumantation使用 asm Instrumantation 测量 java 程序运行时
【发布时间】:2010-12-10 16:48:34
【问题描述】:

我想知道是否有一种方法可以使用 asm 的 java 字节码检测来测量给定的字节码(类文件,在原始代码中具有 main 函数)运行时。

测量应该尽可能准确,如果可能的话,以纳秒为单位。

谢谢

【问题讨论】:

  • 请问您需要它做什么?
  • 是的,我正在开发一个获取给定字节码并对其进行分析的项目。主要目标是跟踪对对象的访问,并在热图上表示它。要求 nanotime 的原因是因为它在热图上看起来更好,分辨率更好,并且您可以实际查看程序的某些“阶段”。

标签: java time measurement java-bytecode-asm nanotime


【解决方案1】:

请注意,添加 System.nanoTime() 或类似方法会为测量的代码部分增加 300 纳秒或更多时间。

这在 ASM 中是可能的,但我怀疑不会给你想要的结果。

您是否尝试过对该方法进行性能测试。即调用它 2 秒以查看平均调用时间。如果你调用它足够长的时间,它可以精确/稳定到纳秒。

【讨论】:

  • 好吧,因为我对输入没有任何限制。它可以是任何程序,甚至是运行一小时的程序。我想一口气获得那个时间。我想在代码的开头插入一行,它将测量 begging 的时间,并在最后。有可能吗?
  • 这听起来像是个人资料做得很好的事情。您是否尝试过先分析应用程序?
  • cpu 分析可以告诉你一些事情,例如任何方法被调用了多少时间或者每个方法花费了多长时间。 VisualVM 是一个免费的分析器,但我更喜欢 YourKit(不是免费的)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-21
相关资源
最近更新 更多