我试图生成随机字节的大字节数组。 使用下面的代码我可以生成在约4秒中的字节数组千万随机字节和地点。 2秒的产生和2秒至放置在阵列上。
for (var i:Number = 0; i < reqLength; i++){
rnd = Math.random() * 255;
randomBytes.writeByte(rnd);
}
难道一个更快的方法存在吗?
我生成的int因为我建立扩展的ASCII字符的字节数组。
我试图生成随机字节的大字节数组。 使用下面的代码我可以生成在约4秒中的字节数组千万随机字节和地点。 2秒的产生和2秒至放置在阵列上。
for (var i:Number = 0; i < reqLength; i++){
rnd = Math.random() * 255;
randomBytes.writeByte(rnd);
}
难道一个更快的方法存在吗?
我生成的int因为我建立扩展的ASCII字符的字节数组。
有了一些调整,我调下来,从4秒到0.5秒。
var aBytes:ByteArray = new ByteArray;
// Set the final ByteArray length prior to filling it.
// It saves about 30% of elapsed time.
aBytes.length = 10000000;
// Write 2 500 000 x 4 byte unsigned ints instead of 10 000 000 x 1 bytes.
// You'll get 4 times less operations thus it is about 4 times faster.
for (var i:int = 0; i < 2500000; i++)
{
// Don't use local variable = less operations.
aBytes.writeUnsignedInt(Math.random() * uint.MAX_VALUE);
}
PS还有一个有趣的选择,工作的快很多,像100毫秒:
var aRaster:BitmapData = new BitmapData(5000, 500, true, 0x000000);
var aBytes:ByteArray = new ByteArray;
aRaster.noise(256 * Math.random());
aRaster.copyPixelsToByteArray(aRaster.rect, aBytes);