2010-01-20 80 views
6

任何人都會記得那個在java中爲字符串開發了一些不錯的替代品的開源項目「project」的名字?Java中字符串的性能替換

我知道有一個,只是無法找到它在谷歌,不記得名稱。 (我不是在談論的StringBuilder)

感謝

回答

7

您是否在尋找ropes

繩子是絃樂的高性能替代品。在「Ropes: an Alternative to Strings」中詳細描述的數據結構提供比String和StringBuffer更好的性能,用於像prepend,append,delete和insert這樣的常見字符串修改。像字符串一樣,繩索是不可變的,因此非常適合在多線程編程中使用。

6

有沒有更好的通用更換。 Java的String類非常適合通用的應用。

有特定的情況下更好的實現,可能幫助你在某些情況下:

  • Ropes讓大串的廉價拼接,因爲他們利用一個共享的樹形結構。如果大部分CPU時間用於連接大型字符串,可能比字符串更好。對於重複字符和類似的大塊,繩索也包含一些不錯的優化。然而,它們對於通用目的不是特別有效。
  • javolution.text.Text在概念上與Ropes類似,但更加輕便,並支持實時使用的自定義內存分配。如果你正在做大量絃樂的實時工作,這可能是最適合你的。
  • mikera.persistent.Text是我自己的不可變的文本實現。速度非常快,與javolution.text.Text概念相似,但具有預先計算的哈希碼,因此如果要將大字符串用作散列表或哈希集鍵,效果會更好。 (我需要在某個時間點,因此我推出了自己的...)
  • StringBuilder是非常好的,如果你想要一個可變的字符串,你會做很多小的改變。
  • char []數組如果你想要的只是一個固定長度的可變字符串,它很簡單並且相當不錯 - 它幾乎是你在JVM上可以做的最有效率的字符串。值得考慮的是你是否試圖實現一些自定義的低級字符串算法。大多數其他字符串實施使用這個引擎蓋下.....
+0

比接受的答案更好/更完整的答案。 – javadba