我一直在使用JProfiler来分析一段通过JNI调用本机C代码的Java代码,我从"CPU视图"窗口得到了奇怪的结果.特别是,"调用树"选项卡上的信息告诉我,调用本机代码的Java方法占用运行时间的最大部分,但"热点"选项卡甚至根本不列出该方法.我也注意到org.joda.time类的一个类似的故事,据报道它有相当大的CPU但没有被报告为热点,我想知道这是因为他们花了很多时间调用原生日期转换代码.
任何洞察这个问题将不胜感激.
编辑:我刚刚发现了一篇非常令人不安的学术论文,题为"评估Java Profilers的准确性"(我会提供一个链接,但似乎科罗拉多大学服务器引用此文件的Google结果现在非常不满意,所以我不得不从谷歌的"快速查看"链接中删除一份副本.我怀疑本机方法的问题在于它们被过度计数,因为它们有很多调用,它们很短并且调用很可能导致屈服点; 但是,我不确定是否同样适用于时间转换例程.请注意,在同一测试运行中使用检测分析和采样分析时,我会得到明显不同的结果,并且检测结果与我的直觉更好地吻合.我推荐给那些曾经发现自己在分析运行结果上摸不着头脑的人.仍然希望有人能够获得更多关于此的信息; "剖析器错了"并不是一个非常令人欣慰的结果.
编辑2:看起来像colorado.edu已经整理出来,这里是链接:http://www-plan.cs.colorado.edu/klipto/mytkowicz-pldi10.pdf
| 归档时间: |
|
| 查看次数: |
2482 次 |
| 最近记录: |