th3*_*c0n 10 java oop performance new-operator object-construction
在我当前的项目(OpenGL 体素引擎)中,我在生成模型时遇到了一个严重的问题。我有一个非常面向对象的结构,这意味着即使我的顶点的单个参数也是Objects。这样我Object在大约 5 秒内为 750 个体素创建了大约 75000秒。Java 在分配 new 时真的这么慢,Object还是我错过了代码中某个地方的重大失败?
很大的问题。一般来说,它取决于对象类定义和构造对象所需的工作量。
一些问题:
这些问题解决了我的问题。
另见http://oreilly.com/catalog/javapt/chapter/ch04.html
最后让我建议您使用(已弃用的)对象池模式或重用对象。
总结,不,一般来说,java对象创建并不慢
当然不是。以下代码分配了 1000 万个对象并将它们存储在一个数组中。在我 5 岁的笔记本上,它在 1.4 秒内完成。
public class Test {
public static void main(String[] args) {
Object[] o = new Object[10_000_000];
long start = System.nanoTime();
for (int i = 0; i < o.length; i++) {
o[i] = new Object();
}
long end = System.nanoTime();
System.out.println(Arrays.hashCode(o));
System.out.println(new BigDecimal(end - start).movePointLeft(9));
}
}
Run Code Online (Sandbox Code Playgroud)
...即使这个基准测试非常幼稚,因为它不会在启动计时器之前及时触发被测代码的编译。
| 归档时间: |
|
| 查看次数: |
7207 次 |
| 最近记录: |