ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

计算为Java代码执行的字节代码的最佳方法

2019-10-29 09:01:58  阅读:223  来源: 互联网

标签:performance jvm profiler jprofiler java


我试图获取各种Java程序的时序数据.然后,我必须根据此计时数据执行一些回归分析.这是我用来获取时序数据的两种方法:

> System.currentTimeMillis():最初使用此方法,但是当同一程序多次运行时,我希望定时数据保持恒定
次.在这种情况下,变化很大.当两个实例
相同的代码并行执行,变化更大.所以
我放弃了这个,开始寻找一些探查器.
热点JVM中的-XX countBytecodes标志:由于计时数据的差异很大,因此我想到了在执行该代码时测量所执行字节代码的数量.当同一程序多次执行时,它应该具有更多的静态计数.但这也有变化.当顺序执行程序时,变化很小,但是在相同代码的并行运行期间,变化很大.我也尝试使用-Xint进行编译,但结果相似.

因此,我正在寻找一些探查器,该探查器可以为我提供执行代码时执行的字节代码的计数.在同一程序的运行期间,计数应保持恒定(或相关性接近1).或者,如果可以根据其他指标来获取计时数据,那么在多次运行中该数据应该几乎保持不变.

解决方法:

I wanted the timing data to be constant when the same program was run multiple times

除非它是为硬实时系统而设计的,否则您在计算机上肯定无法做到这一点,这在实际计算机上是不可能的.

I am looking for some profiler that could give me the count of byte codes executed when a code is executed.

假设您可以执行此操作,那么它什么也不会证明.例如,根据运行它的硬件,您将看不到它比%便宜90倍.您将看不到if的分支错过比投机分支贵100倍以上.您将无法看到对导致TLB未命中的内存区域的内存访问可能比复制4 KB数据要昂贵得多.

if there could be some other metric based on which I could get timing data, which should stay almost constant across multiple runs.

您可以运行多次并取平均值.这将隐藏任何高结果/异常值,并为您提供吞吐量的理想方法.如果运行足够长的时间,则它对于给定的机器可以是可复制的数字.

标签:performance,jvm,profiler,jprofiler,java
来源: https://codeday.me/bug/20191029/1958788.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有