我正在使用下面的代码来处理一些大文件。
var joinedBytes:ByteArray = new ByteArray;
joinedBytes.length = _chunkSize;
for (var i:Number = 0; i < _chunkSize; i++) {
joinedBytes.writeByte(_xorBytesBuffer[i]^_rndBytesBuffer[i]);
}
在桌面上处理 10MB 数据大约需要 2.5 秒。
这是正常表现吗?
有什么办法可以加快速度吗?
我认为有些时候是写入字节数组。
编辑:
_xorBytesBuffer 和 _rndBytesBuffer 都是字节数组。
最佳答案
我没有测试所有内容。我可能在下面的某个地方错了,但是......
ByteArray 更快
[i]
建议您使用 Vector/Array
使用另一个 ByteArray
作为 _xorBytesBuffer
和 _rndBytesBuffer
应该会加快速度。
您还希望对更大的数据进行操作,即 writeUnsignedInt()
而不是 writeByte()
另请参阅this question
uint 比 Number 更快
如果您只有 10MB,则需要使用 var i:uint
而不是 Number
。
另一件事是你可以用++i
替换i++
,尽管我没有真正测试这是否有很大影响 - 我只听说它更快。
删除额外步骤。
你甚至可以尝试这样的事情:
for (var i:uint = 0; i < _chunkSize;) {
joinedBytes.writeByte(_xorBytesBuffer[i]^_rndBytesBuffer[i++]);
}
请告诉我们_rndBytesBuffer[i++]
有什么不同;)
等等,我只是说不要使用索引,而是使用另一个 ByteArrays...好吧,如果您仍然想尝试上面的操作,请让我们知道它的执行情况;)
确保您的状况检查尽可能简单。
确保您有类似 var _chunkSize:uint
而不是
function _chunkSize(){return something;}
关于actionscript-3 - Actionscript,提高异或性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42988331/