Java的字符串编码转换费用高吗?

3

我想知道Java的字符串编码转换算法有多昂贵,例如需要将一段文本从EBCDIC转换为UTF-16,或者对一个大文件进行类似的转换。是否有关于此转换成本的基准测试?包括多种编码的基准测试会更好。

3个回答

3

这是一个O(n)算法。随着转换字符串长度的增加,执行时间会更多或更少呈线性上升趋势(尽管如果您正在转换数百万个非常短的字符串,则函数调用的开销将增加到此中)。

在几乎所有情况下,这不会成为瓶颈。您可能可以在可忽略的时间内对非常大的大小为数十兆字节的字符串进行编码。我没有实际的基准数据。


1

我认为这是可以忽略不计的。如果你要转换成千上万个字符串,那么分配新的字符串对象的成本可能更令人担忧;如果你要转换非常大的字符串,则需要分配巨大的字节数组。但即使在极端情况下,也只有这些才会成为问题。


0

这只是一个相当微不足道的开销 - Java的字符串算法通常非常出色,并且经过多年的优化。

这并不意味着不可能创建一个更有效的专用算法,或者接口到一个优化的本地代码库以获得额外的几个百分点性能。但除非您有很多服务器,其中编码占用了CPU时间的相当大比例,否则这样做可能不值得努力。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接