代码中的字符串常量/文字是否会大大减慢编译速度?

时间:2016-08-08 18:37:37

标签: java string compilation compile-time compile-time-constant

字符串编译时常量(internalized-strings)和文字可以与==进行比较,因为如果它们在某种程度上相等,它们在编译时被赋予相同的引用。

这是否意味着编译由n个字符串文字组成的代码需要n log(n)时间来编译?

我在这里提出这个问题是因为有人可能已经知道了答案,而且我不确定我是否可以编写一个以可靠,可重复或重要的方式测量效果的测试。或者说这个测试会反映现实世界的限制等。

我将发布我可以提出的任何测试用例,请随时提出建议,我会尽快实现它们。

1 个答案:

答案 0 :(得分:1)

  

代码中的字符串常量/文字是否会大大减慢编译速度?

没有

  

字符串编译时常量(internalized-strings)和文字可以与==进行比较,因为如果它们在某种程度上相等,它们在编译时被赋予相同的引用。

不,他们不是。它们在编译时汇集到.class文件的常量区域,并且在分配引用时,它们在类加载时实习

  

这是否意味着编译由n个字符串文字组成的代码需要n log(n)时间来编译?

没有。这里没有固有的 O(N log(N))过程。在任何明智的实现中,通过哈希表汇集 O(1),并实习同上。

[当然可能构建 O(N log(N))的编译器或intern()方法O(N ^ 3)或更糟,但问题中的任何内容都不包括。]