gpt4 book ai didi

java - 一般概念-java代码和周期时钟

转载 作者:行者123 更新时间:2023-11-30 06:58:42 27 4
gpt4 key购买 nike

我很好奇我们如何通过查看某些 java 代码来知道 CPU 需要多少个时钟周期。

ex:

public class Factorial
{
public static void main(String[] args)
{ final int NUM_FACTS = 100;
for(int i = 0; i < NUM_FACTS; i++)
System.out.println( i + "! is " + factorial(i));
}

public static int factorial(int n)
{ int result = 1;
for(int i = 2; i <= n; i++)
result *= i;
return result;
}
}

最佳答案

I am just curious how can we know how many cycle clocks CPU needs by looking through certain java code.

如果您谈论的是真实的硬件时钟周期,答案是“您无法知道”1

之所以如此困难,是因为程序在执行之前和执行期间要经历许多复杂的(而且大部分是不透明的)转换:

  • 源代码提前编译成字节码。这取决于使用的字节码编译器。
  • 字节码在执行期间的某个时间被 JIT 编译为本地代码。这取决于执行平台中的 JIT 编译器以及应用程序的执行行为。
  • 执行给定指令序列所需的时钟周期数取决于 native 代码、CPU 模型,包括内存缓存大小和……应用程序的内存访问模式。
  • 除此之外,JVM 具有各种“幕后”不确定性来源,以及影响行为的各种启动时调整参数……和周期计数。

但幸运的是,有一些不依赖于测量硬件时钟周期的实用方法来检查软件性能。您可以:

  • 测量或估计执行的 native 指令,
  • 测量或估计执行的字节码,
  • 估计执行的 Java 级操作或语句,或
  • 运行代码并测量所用时间。

最后两个通常是最实用的。

1 - ...除了在准确硬件级模拟器上运行应用程序/JVM 以实现您的确切硬件配置,并让模拟器计算时钟周期。老实说,我不知道运行到那个级别的模拟器是否真的存在。如果有,它们很可能是 Intel、AMD 等公司的专有 Assets 。

关于java - 一般概念-java代码和周期时钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32419156/

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