【发布时间】:2014-01-16 06:14:55
【问题描述】:
在对 java 代码进行性能测试时,您希望测试 JIT 编译的代码,而不是原始字节码。要使字节码被编译,您必须通过多次执行代码来触发编译,并为后台线程留出足够的 yield 时间来完成编译。
- “非常有把握”代码将被 JIT 编译所需的代码路径的最少“预热”执行次数是多少?
- “非常有把握”编译完成的主线程的最短休眠时间是多少(假设代码块很小)?
我正在寻找一个可以安全地应用于任何现代操作系统的阈值,例如用于开发环境的 Mac OS 或 Windows,以及用于 CI/生产的 Linux。
【问题讨论】:
-
请注意,JVM 已针对“类 Java”和常见程序的典型字节码进行了优化。根据字节码的特性,它可能永远不会被编译。
标签: java testing bytecode performance-testing jit