gpt4 book ai didi

java - 从 byte[] 到 String 的转换的时间令人惊讶

转载 作者:行者123 更新时间:2023-12-02 13:24:17 24 4
gpt4 key购买 nike

我正在使用 DataInputStream 从文件中读取字节数组并转换为字符串。这是原始代码。请注意,dis 是 FileInputStream 上的 GZipInputStream 上的 BufferedInputStream 上的 DataInputStream

// 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 的变化是无关紧要的。如果我只是删除条件,它会获得相同的速度提升。

最佳答案

在第二种情况下,您将创建一个大小合适的字符串。在第一种情况下,您的字符串都与您之前创建的最大字符串一样大。

您可能有稍后的处理代码,使您没有注意到这种差异?

关于java - 从 byte[] 到 String 的转换的时间令人惊讶,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15344867/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com