对象实例化时间是否取决于其大小?

时间:2012-12-03 03:52:16

标签: java microbenchmark

我们知道对象大小取决于其字段类型。但是对象实例化时间是否取决于其字段类型?看我的测试

public class Test {
    byte f1;
    byte f2;
    byte f3;
    byte f4;
    byte f5;
    byte f6;
    byte f7;
    byte f8;
    byte f9;
    byte f10;

    public static void main(String[] args) {
        int n = 1000000;
        Test[] a = new Test[n];
        long t0 = System.currentTimeMillis();
        for(int i = 0; i < n; i++) {
            a[i] = new Test();
        }
        System.out.println(System.currentTimeMillis() - t0);
    }
}

也许不是第一堂课,仍然为不同的领域类型提供了相当稳定的结果:

byte - 125 ms
int  - 250 ms
long - 370 ms

为什么?我在我的笔记本(Celeron 925)上从Eclipse运行它,它需要-Xmx1024M。

1 个答案:

答案 0 :(得分:0)

较大类型需要更多时间,因为操作系统必须搜索 HEAP 中的适当内存量适合那种类型。因此类型越大,一般需要更多时间。

大多数时候对象实例化时间与字段类型成正比