哪个更快 - 比较二进制数据或逐行字符串?

时间:2014-05-23 23:39:26

标签: java string performance binary-data string-matching

问题

我在这里描述了一个非常简化的问题版本。我有一个巨大的文件(10-50GB),我需要分成数百万块。假设我有一些包含字符串" SPLITTER"的行。我需要按这些行拆分文件。每个块将包含两个SPLITTER行之间的文本。

这当然非常简化,实际的用例将涉及更复杂的匹配/拆分。

问题

所以我们这里有流媒体匹配问题。哪个更有效:将此视为字符串匹配问题,使用缓冲读取器读取行并根据具体情况进行比较和拆分? - 或者 - 将文件视为二进制输入流,将分割器字符串视为数组[Byte]并进行逐字节比较?

在开始实施之前,我需要先了解一下。

我正在使用Java。此外,原始输入将在动态中从bz2解压缩,以获得它的价值。

1 个答案:

答案 0 :(得分:1)

它总是能够更快地将数据视为原始字节。将数据作为字符串意味着将其作为字节读取然后创建新字符串。