Java中的对象创建很慢 [英] Object creation in Java is slow

查看:108
本文介绍了Java中的对象创建很慢的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

My experience shows that object creation in Java is very slow. Often, I optimize my code by just removing object creation and using the same objects repeatedly.

我想知道它在OOP基础上的其他语言是否同样慢,因为对我而言,一种非常直观的语言是面向硬核对象的语言,需要这么多创建对象的时间。

I am wondering if its similarly slow in other language with OOP base, because, to me, it is very counter intuitive that a language that's hardcore object oriented, takes so much time for object creation.

有没有人在几个langauges上对此进行了分析?

Has anybody profiled this on several langauges?

推荐答案

尝试看看你从中得到了什么 - 一些人试图让虚拟机不优化循环:

Try see what you get from this - some exercising to try to get the VM to not optimize the loop away:

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);
        }
}

我得到了


创建4000000个对象需要678 ms

Creating 4000000 objects took 678 ms

每个对象应该在170纳秒左右。

Which should be around 170 nanosecond per object.

这篇关于Java中的对象创建很慢的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆