创建对象会使VM更快吗?

Sud*_*han 2 java algorithm optimization creation object

看看这段代码:

MessageParser parser = new MessageParser();
for (int i = 0; i < 10000; i++) {
    parser.parse(plainMessage, user);
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,它运行SLOWER(大约100ms)

for (int i = 0; i < 10000; i++) {
    MessageParser parser = new MessageParser();
    parser.parse(plainMessage, user);
}
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?测试重复了很多次,所以它不仅仅是随机的.如何创建一个对象10000次比创建一次快?

AlB*_*lue 10

因为Java具有"世代垃圾收集"并且可以快速识别(在循环中)它不会重复使用相同的对象/内存空间,因此GC成本几乎为零.另一方面,你的长寿对象将在托儿所世代传承下来,并且必须被移到主要世代.

总之,如果不进行测试来测量它,就不能真正假设性能.