相关疑难解决方法(0)

new String()vs literal string performance

StackOverflow上多次询问过这个问题,但没有一个是基于性能的.

Effective Java书中给出了它

如果 String s = new String("stringette");在循环或频繁调用的方法中发生,则可以不必要地创建数百万个String实例.

改进版本只是以下内容: String s = "stringette";此版本使用单个String实例,而不是每次执行时都创建一个新实例.

所以,我尝试了两者,发现性能有了显着提高:

for (int j = 0; j < 1000; j++) {
    String s = new String("hello World");
}
Run Code Online (Sandbox Code Playgroud)

需要大约399 372纳秒.

for (int j = 0; j < 1000; j++) {
    String s = "hello World";
}
Run Code Online (Sandbox Code Playgroud)

大约需要23 000纳秒.

为什么会有这么多的性能提升?内部是否有任何编译器优化

java string

17
推荐指数
1
解决办法
2万
查看次数

标签 统计

java ×1

string ×1