我正在使用 aDataInputStream
从文件中读取字节数组并转换为字符串。这是原始代码。请注意, dis 是 a DataInputStream
on BufferedInputStream
a GZipInputStream
on a FileInputStream
。
// class definition
var byteBuffer = Array[Byte](0)
...
// Get the payload
if (contentLength > byteBuffer.length) {
println("resize")
byteBuffer = new Array[Byte](contentLength, "UTF-8")
}
dis.read(byteBuffer, 0, contentLength)
new String(byteBuffer)
这段代码和周围的处理速度很慢。我每秒只处理 80 个文档。一个小的变化会显着提高速度。
// Get the payload
val byteBuffer = new Array[Byte](contentLength, "UTF-8")
dis.read(byteBuffer, 0, contentLength)
new String(byteBuffer)
现在我每秒处理近 300 个文档。对我来说,为什么每次分配数组都应该提供显着的速度优势对我来说毫无意义,即使在深入研究解码代码之后也是如此。有任何想法吗?
val/var 变化无关紧要。如果我只是删除条件,它会获得相同的速度提升。