【发布时间】:2010-10-21 00:18:14
【问题描述】:
我想知道 Java 的字符串编码转换算法有多昂贵,例如,因为需要转换为 UTF-16 的 EBCDIC 中的一段文本,或者对于大文件的类似转换。有没有关于这种转换成本的基准?多种编码的基准会更好。
【问题讨论】:
我想知道 Java 的字符串编码转换算法有多昂贵,例如,因为需要转换为 UTF-16 的 EBCDIC 中的一段文本,或者对于大文件的类似转换。有没有关于这种转换成本的基准?多种编码的基准会更好。
【问题讨论】:
这是一个 O(n) 算法。执行所需的时间将或多或少地随着您要转换的字符串的长度线性增加(尽管如果您要转换数百万个非常短的字符串,函数调用的开销将会增加)。
在几乎所有情况下,这都不会成为瓶颈。您可能可以在极短的时间内对数十兆字节的非常大的字符串进行编码。不过我没有实际的基准数据。
【讨论】:
这是一个可以忽略不计的开销 - Java 的字符串算法总体上非常好,并且多年来已经得到很好的优化。
这并不是说不可能创建更高效的专用算法,或者可能无法与优化的本机代码库接口以获得百分之几的额外性能。但是,除非您有很多服务器,其中编码占用了很大一部分 CPU 时间,否则不太可能值得付出努力。
【讨论】:
我怀疑它可以忽略不计。如果您要转换数千个字符串,我会更担心分配新字符串对象的成本,或者如果您要转换非常大的字符串,我会更担心分配巨大的字节数组。但即便如此,也只是在极端情况下。
【讨论】: