代码之家  ›  专栏  ›  技术社区  ›  Neil Traft

非最终静态字符串是否比静态最终字符串更有效?

  •  1
  • Neil Traft  · 技术社区  · 14 年前

    我刚在黑莓文档上读到一篇关于 writing efficient code in J2ME .

    在那篇文章中有一节建议您“对字符串使用静态变量” static final 引用作为字符串文本,最好不要使用final(我想假设检索静态引用比从字符串池检索要便宜?).

    对于所有的jvm都是这样吗?我的老板在我上一份工作中狠狠地提醒我们,我们应该永远, 总是 使用 静态期末考试 我们的常数。我们在Java中做嵌入式编程,所以他对性能非常执着(尽管在这种情况下我不确定他是否更关心内存或速度)。我的老板做Java已经很多年了,而且对他的东西非常了解,所以我接受了他的建议;现在我得到了矛盾的建议!

    那么哪一个真的更好?您可以从内存保护的角度或速度的角度来回答,也可以从J2ME或J2SE的角度来回答。

    1 回复  |  直到 14 年前
        1
  •  3
  •   Steven Schlansker    14 年前

    一般来说,它们应该是相同的。(与 相同的 定义为足够接近,永远不会有问题)

    我强烈主张你应该对你的意图进行编码(也就是说,让静态性和非静态性被定义为 常数与 实例 常数)而不是任意的“性能增强”

    如果您发现这是一个严重的性能问题(并且只有在您测量它之后!),我会将其归类为编译器/JVM缺陷,并将解决方法(交换其静态特性)放在适当的位置,并给出注释说明原因。