【问题标题】:Performance replacement for String in Java [closed]Java中String的性能替换[关闭]
【发布时间】:2010-01-20 10:58:17
【问题描述】:

有人记得那个开源“项目”的名称吗?该项目开发了一些不错的 java String 替代品?

我知道有一个,只是在谷歌上找不到它,不记得名字了。 (我不是在说 StringBuilder)

谢谢

【问题讨论】:

    标签: java performance string


    【解决方案1】:

    你在找ropes吗?

    绳索是弦乐的高性能替代品。该数据结构在“Ropes: an Alternative to Strings”中有详细描述,它为常见的字符串修改(如前置、附加、删除和插入)提供了比 String 和 StringBuffer 更好的性能。与字符串一样,绳索是不可变的,因此非常适合用于多线程编程。

    【讨论】:

      【解决方案2】:

      没有比这更好的通用替代品了。 Java 的 String 类非常适合一般用途。

      对于特定情况,有更好的实现可能在某些情况下对您有所帮助:

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

      【讨论】:

      • 比接受的答案更好/更完整的答案。
      【解决方案3】:

      也许是Javolution 和它的javolution.text.Text?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-31
        • 1970-01-01
        • 1970-01-01
        • 2021-04-26
        • 1970-01-01
        • 2015-07-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多