Actionscript,提高异或性能?

Actionscript, improving xor performance?

我正在使用下面的代码来处理一些大文件。

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()

另见

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;}