GWT中的快速base64解码

时间:2014-07-13 08:54:04

标签: iphone gwt base64 jsni

在iPhone 4S上解码base64时出现以下性能问题。我正在解码大小约为80K的“blob”。 atob()的本机函数非常快,几毫秒内完成。但是,结果是一个字符串,其中字符串中每个字符的字符代码(使用.charCodeAt()获得)表示base64编码的二进制数据的一个字节。我想将其转换为byte [],但这对于iPhone来说似乎是一个非常缓慢的过程。只需遍历数组并在每个字符上调用.charCodeAt()并将其存储在例如一个UInt8Array在iPhone 4S上需要1.2秒 - 即使我们只讨论80K并且base64解码已经完成 - 这是字节解码需要这么长时间。如果一个人将解码后的字符串(即atob()的输出)解析回GWT并在那里转换为byte [](再次通过循环),则性能损失是相同的。所以我要找的是:

  1. 将atob()的字符串转换为byte []的快速方法。似乎使用charCodeAt()将它们转换为角色,与这样的操作相比,它的速度太慢了。
  2. 快速base64到byte []解码器,它不依赖于atob()但可以原生生成byte []。
  3. 不幸的是,我为#2尝试的替代品甚至比其他方法更慢(因子3倍)。

1 个答案:

答案 0 :(得分:0)

经过更多实验,结果证明了字符串 - > Uint8array转换确实不像之前所说的那么慢,这是由于另一个编程错误。所以1,2秒真的只有40毫秒左右。所以从我的POV中可以关闭它。