Java中String的性能替换

Rom*_*man 6 java string performance

有人记得那个开源"项目"的名称,它在java中为String开发了一些很好的替代品吗?

我知道有一个,只是无法在谷歌找到它,不记得名字.(我不是在谈论StringBuilder)

谢谢

Jer*_*ome 7

你在寻找绳索吗?

绳索是Strings的高性能替代品." 绳索:字符串的替代 "中详细描述的数据结构提供了比String和StringBuffer渐近更好的性能,用于常见的字符串修改,如prepend,append,delete和insert.与Strings一样,绳索是不可变的,因此非常适合用于多线程编程.


mik*_*era 7

没有更好的通用替代品.Java的String类非常适用于通用目的.

对于在特定情况下可能对您有帮助的特定案例,有更好的实施方案:

  • 绳索允许大型字符串的廉价连接,因为它们利用共享树结构.如果你的大部分CPU时间用于连接大字符串,那么可能比字符串更好.Ropes还包含对大块重复字符和类似字符的一些很好的优化.但是,它们对于通用目的并不是特别有效.
  • javolution.text.Text在概念上与Ropes类似,但更轻量级并支持实时使用的自定义内存分配.如果您使用大字符串进行实时工作,这可能是最适合您的.
  • mikera.persistent.Text是我自己的不可变文本实现.非常快,在概念上类似于javolution.text.Text但具有预先计算的哈希码,因此如果要将大字符串用作hashmap或hashset键,则会更好.(我在某些时候需要这个,因此我自己动起来......)
  • StringBuilder非常好,如果你想要一个可变的字符串,你将要做很多小的改动.
  • 如果你想要的是一个固定长度的可变字符串,char []数组很简单也很好 - 它几乎是你在JVM上可以做的最有效的.值得考虑的是,如果您正在尝试实现一些自定义的低级别字符串算法.大多数其他字符串实现在引擎盖下使用它.....