2009-04-22 82 views
3

我想知道Java的字符串編碼轉換算法有多昂貴,比如說,一段文本是在EBCDIC中需要轉換爲UTF-16,或者用於類似的大文件轉換。這個轉換的成本是否有任何基準?多種編碼的基準會更好。java的字符串編碼轉換有多昂貴?

回答

3

這是一個O(n)算法。執行所花費的時間會隨着要轉換的字符串的長度或多或少呈線性增加(儘管如果要轉換數百萬個非常短的字符串,函數調用的開銷將增加)。

在幾乎所有情況下,這不會是一個瓶頸。你可能可以在很小的時間內編碼數十兆字節的非常大的字符串。儘管我沒有實際的基準數據。

1

我懷疑它是微不足道的。如果要轉換數千個字符串或分配巨大的字節數組(如果要轉換非常大的字符串),我會更擔心分配新String對象的成本。但即使如此,只有在極端的情況下。

0

這是一個可以忽略不計的開銷 - Java的字符串算法總體來說非常好,多年來一直在優化。

這並不是說不可能創建一個更高效的專用算法,或者可能與一個優化的本地代碼庫進行接口,以獲得幾個額外的性能。但除非你有很多服務器,編碼佔用了CPU時間的很大一部分,否則不太值得。