在iPhone 4S上解码base64时出现以下性能问题。我正在解码大小约为80K的“blob”。 atob()的本机函数非常快,几毫秒内完成。但是,结果是一个字符串,其中字符串中每个字符的字符代码(使用.charCodeAt()获得)表示base64编码的二进制数据的一个字节。我想将其转换为byte [],但这对于iPhone来说似乎是一个非常缓慢的过程。只需遍历数组并在每个字符上调用.charCodeAt()并将其存储在例如一个UInt8Array在iPhone 4S上需要1.2秒 - 即使我们只讨论80K并且base64解码已经完成 - 这是字节解码需要这么长时间。如果一个人将解码后的字符串(即atob()的输出)解析回GWT并在那里转换为byte [](再次通过循环),则性能损失是相同的。所以我要找的是:
不幸的是,我为#2尝试的替代品甚至比其他方法更慢(因子3倍)。
答案 0 :(得分:0)
经过更多实验,结果证明了字符串 - > Uint8array转换确实不像之前所说的那么慢,这是由于另一个编程错误。所以1,2秒真的只有40毫秒左右。所以从我的POV中可以关闭它。