Java 优化范式

标签 java optimization jvm

我目前正在做一些Java优化。评估我的进度的最佳方法似乎是重复运行并使用 System.nanoTime 收集运行时统计信息。

我的大部分背景都是嵌入式 DSP 应用。在我的嵌入式开发中,我可以访问 CPU 周期计数器(这是优化的一个很好的措施)。 JRE 的作用就像一个合成 CPU,有没有办法获取已执行的指令数或 JRE 时钟等效信息?

预先感谢您的任何提示。 J.R.

最佳答案

字节码计数几乎肯定对您想要的毫无用处。就运行时的性能而言,它们完全是虚拟的/概念性的。唯一重要的是已经预热的代码的运行时间。

我建议您查看 JMH 以对您的代码进行微基准测试。 http://openjdk.java.net/projects/code-tools/jmh/

如果您有 DSP/实时背景,我建议您查看延迟分布并最小化您的分配率。

注意:JVM 在指令之间注入(inject)“安全点”来检查线程是否需要停止,例如执行垃圾收集。垃圾收集可能需要几秒钟的时间。然而,安全点通常会被优化以避免减慢程序速度。

简而言之,这意味着指令之间的时间可能没什么,也可能有什么,可能是几秒甚至几分钟,所以我不会费心去计算它们。

关于Java 优化范式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38604407/

相关文章:

java - Java 中的 MySQL 连接器

java - React Native Amplify AWS 包与 firebase 冲突

c++ - 在 VS2015 中发布 x64 配置时的不同结果

java - JVM Runtime.getRuntime().availableProcessors() 在 AWS ECS Fargate 上返回 1

java - ArrayList 中的数组问题,Java

jvm - 什么启动 JVM 线程?

java - Camunda BPM 的 JavaDelegate 类应该是线程安全的吗?

java - 在工厂类内部或外部有一个缓存机制更好吗?

php - 生成具有不规则步长的范围。优化

optimization - 延续+尾递归技巧是否真的用堆栈空间交换堆空间?