java - Java 与 C++ 中的基元数组

标签 java c++ arrays performance

<分区>

我想了解 C++ 和 Java 中数组的性能差异。我知道对于java中的对象数组,对象并没有连续存储在内存中,只有指向这些对象的指针是连续存储的。对于像 int 这样的原始类型呢?据我所知,JVM 不保证数组将连续存储。我基本上想知道 java 和 c++ 之间原始数组性能的主要区别是什么。边界检查是否也会降低 Java 中数组的速度?

最佳答案

As far as I know the JVM doesn't guarantee that the array will be stored contiguously.

虽然我没有看到任何铸铁保证数组元素将连续存储,但我相信它们将用于每个主流实现。对于原始类型,原始值是直接存储的——而不是引用。据我所知,所有主流实现也都对数组进行打包——因此,例如,如果你有一个 byte[],它不会将每个字节对齐到 4 或 8 字节边界(因此将所需空间乘以 4 或 8)。但是 boolean[] 值不包含单个位(在我使用的实现中)- new boolean[n] 占用与 new byte 相同的空间[n].

关于java - Java 与 C++ 中的基元数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26312336/

相关文章:

c++ - Qt 套接字问题

php - 使用PHP单击按钮时如何获取同一行数据?

java - 如何使用 Spring Boot 从 gradle 获取应用程序版本和其他一些信息?

java - 如何在从 Maven 自定义插件编译之前扫描当前项目中的类?

c++ - 为什么不将比较因素纳入 Big O 计算?

c++ - 对象可以作为值传递给复制构造函数吗

javascript - 在 JavaScript 中获取数组列的总和

arrays - typescript :对象数组的valueof字段

java - Spring-security - AccessDecisionVoter-impl 不会被调用

java - 为什么Java中的非线程安全计数器总是返回正确的值?