gpt4 book ai didi

java - 我如何计算在 Java 中执行某行代码需要多少时间?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:23:13 27 4
gpt4 key购买 nike

假设我有一些代码,我想最大限度地优化它,不考虑可读性、可维护性等。

为了这个目的,有没有办法算出每个基本 Action 需要多少时间?我想这可能取决于 CPU,但我不确定。

我的意思是像循环 for、赋值 a=24、数学运算 2+25 等。

最佳答案

上下文很重要。各种 Java 语言构造没有固定的成本,您可以将它们相加以获得有用的运行时估计的近似值。 您似乎希望得到的答案并不存在。

例如,即使您确实设法正确设计了一个微基准测试来衡量一些 if()sswitch,结果也将在很大程度上取决于周围的代码,案例的细节,以及分支的可预测性。制定微基准测试很难。除非您查看循环中实际运行的机器指令,否则您通常最终会测量出您想要测量的东西。如果您不使用结果,一个好的编译器也很容易优化您的循环,但是很难以不会产生比您尝试测量的开销更多的方式使用结果。

一个好的 JIT 编译器 JVM 应该生成不会比您希望的差太多的机器代码,因此如果您对 C 如何编译为 ASM 有很好的了解,这对 java 可能会有用。

如果您想了解现代 x86 微架构的快与慢,请查看 Agner Fog's guides .

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

关于java - 我如何计算在 Java 中执行某行代码需要多少时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36168535/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com