Добрый день, столкнулся с задачей перемешивания символов в строчке размером в сотню мегабайт.
Привет -> рПвите
Само собой при помощи цикла, строчек и getCharAt это все происходит _очень_ медленно (порядка 2 минут) и сжирает феерический объем оперативы.

Код AS3:
if (!(length % 2 == 1))
{
while (i < length)
{
s += base64.charAt(i + 1) + base64.charAt(i);
i+=2;
}
}
else
{
while (i < length - 1)
{
s += base64.charAt(i + 1) + base64.charAt(i);
i += 2;
}
s += base64.charAt(base64.length-1);
}
return s;
Начал копать в сторону байтаррея, через какое-то время написал решение, но по скорости оно не выигрывает и имеет какие-то проблемы с кодировкой

Код AS3:
var b_temp:ByteArray = new ByteArray();
var bytes:ByteArray = new ByteArray();
bytes.writeUTFBytes(base64);
if (!(length % 2 == 1))
{
for (i = 0; i < bytes.length-2; i+=4)
{
b_temp.writeByte(bytes[i + 2]);
b_temp.writeByte(bytes[i + 3]);
b_temp.writeByte(bytes[i]);
b_temp.writeByte(bytes[i+1]);
}
}
else
{
for (i = 0; i < bytes.length - 4; i += 4)
{
b_temp.writeByte(bytes[i + 2]);
b_temp.writeByte(bytes[i + 3]);
b_temp.writeByte(bytes[i]);
b_temp.writeByte(bytes[i+1]);
}
b_temp.writeByte(bytes[bytes.length - 2]);
b_temp.writeByte(bytes[bytes.length - 1]);
}
Прошу помогите добиться наиболее быстрого алгоритма.