加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

我如何计算在Java中执行某些行所需的时间?

发布时间:2020-12-15 04:33:08 所属栏目:Java 来源:网络整理
导读:假设我有一些代码,我想最大限度地优化它,无视可读性,可维护性等. 为此目的,无论如何要确定每个基本动作花费多少时间?我想这可能与CPU有关,但我不确定. 我的意思是像骑自行车,分配a = 24,数学运算2 25等等. 解决方法 环境很重要.各种 Java语言结构没有固定的
假设我有一些代码,我想最大限度地优化它,无视可读性,可维护性等.

为此目的,无论如何要确定每个基本动作花费多少时间?我想这可能与CPU有关,但我不确定.

我的意思是像骑自行车,分配a = 24,数学运算2 25等等.

解决方法

环境很重要.各种 Java语言结构没有固定的成本,您可以将它们加起来以获得有用的运行时估计的近似值.你似乎希望得到的答案不存在.

例如,即使您确实设法正确设计了微基准测量以测量if()s与开关之间的关系,结果也将严重依赖于周围的代码,案例的详细信息以及分支的可预测性. .制作微基准测试很难.除非您查看实际在循环中运行的机器指令,否则通常最终会测量除您想要的内容之外的其他内容.如果你不使用结果,一个好的编译器也很容易优化你的循环,但是很难以一种不会产生比你想要测量的更多开销的方式使用结果.

一个好的JIT编译器JVM应该生成的机器代码并不比你希望的差太多,所以如果你很好地了解C如何编译到ASM,那对java来说可能是有用的.

如果你想了解现代x86微体系结构的快速与慢速,请查看Agner Fog’s guides.

一个好的性能分析工具可以帮助您确定您的代码是否受CPU限制或内存瓶颈(缓存未命中:内存带宽或延迟)或分支错误预测.我没有为Java做过这个,但是只要你使用足够长的运行来隐藏JVM启动的开销,标准工具(比如Linux的perf)就可以工作了.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读