Java中的对象创建很慢

eup*_*a83 -6 java object

我的经验表明,Java中的对象创建非常缓慢.通常,我只是通过删除对象创建并重复使用相同的对象来优化我的代码.

我想知道它在OOP基础上的其他语言是否同样缓慢,因为对我而言,面向硬核对象的语言需要花费大量时间来创建对象,这是非常反直觉的.

有人在几个langauges上描述过这个吗?

nos*_*nos 18

尝试看看你从中得到了什么 - 一些运动试图让VM不优化循环:

import java.util.ArrayList;
import java.util.Random;

class DummyInteger {
    private int i;
    public DummyInteger(int i) {
        this.i = i;
    }
    public int getI() {
        return i;
    }
}

public class ObjectCreationTest {

    final static int ITERATIONS = 2000000;
    public static void main(String[] args) {
        Random r = new Random(System.currentTimeMillis());

        int[] randArr = new int[ITERATIONS];
        for(int i = 0; i < ITERATIONS; i++) {
            randArr[i] = r.nextInt();
        }
        DummyInteger[] iArr = new DummyInteger[ITERATIONS];
        long start = System.currentTimeMillis();
        for(int i = 0; i < ITERATIONS; i++) {
            ArrayList<DummyInteger> list = new ArrayList<DummyInteger>(); 
            list.add(new DummyInteger(randArr[i]));
            iArr[i] = list.get(0);
        }
        long end = System.currentTimeMillis();
        System.out.println(String.format("Creating %d objects took %d ms",ITERATIONS*2,end-start));
        int sum = 0;
        for(DummyInteger mi: iArr) {
            sum += mi.getI();
        }
        System.out.println(sum);
        }
}
Run Code Online (Sandbox Code Playgroud)

我有

创建4000000个对象需要678毫秒

每个物体应该在170纳秒左右.


Jos*_*iaz 9

虽然在极少数情况下可能会有明显的CPU影响,但一般情况下,当前虚拟机的对象创建速度与实际情况一样快.

是一篇文章我喜欢叫"都市传说的表现",我认为这只是那些神话之一.

另请参阅http://www.javaperformancetuning.com/tips/rawtips.shtml,了解如何调整Java App的性能.

问候.