actionscript-3 - Actionscript,提高异或性能?

标签 actionscript-3 actionscript xor

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

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/

相关文章:

javascript - 如何使用 Adob​​e flash 创建整页背景图像

actionscript-3 - 在 ActionScript 中将标签放置在复选框的左侧

actionscript-3 - 如何向 Flash 平台添加新的 API 以启用增强音频?

flash - 为 Sprite 设置 mask

c# - 在 if 语句中使用排他或,C#

算法:范围内数字的约束异或

apache-flex - 访问 DataGrid 中的 ItemRenderer

apache-flex - 更好地进行 FlashDevelop

java - Coldfusion XOR 从 java 翻译而来