
Код AS3:
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.text.TextField;
import flash.utils.getTimer;
import flash.utils.setTimeout;
/**
* @author SlavaRa
*/
public class Main extends Sprite {
public static const COUNT:int = 1000000;
public function Main() {
super();
_field = new TextField();
_field.width = 800;
_field.height = 600;
addChild(_field);
setTimeout(runTests, 1000);
}
private function runTests():void {
//var str:String;
//var arr:Array;
//arr = ["Юзернейм", "4", "года", "завтрашний", "только лишь все"];
//str = "Привет %s, тебе сегодня исполнилось %d %s. Сегодня в %s день могут смотреть не %s.";
//trace(str.replace(/%s|%d/g, function(substr:String, i:uint, str:String):String {
//switch(substr) {
//case "%s": return arr.shift();
//case "%d": return arr.shift();
//}
//}));//Привет Юзернейм, тебе сегодня исполнилось 4 года. Сегодня в завтрашний день могут смотреть не только лишь все.
//arr = ["Юзернейм", "4", "года", "завтрашний", "только лишь все"];
//str = "Привет {0}, тебе сегодня исполнилось {1} {2}. Сегодня в {3} день могут смотреть не {4}. Не скучай, {0}!";
//var len:int = arr.length;
//for(var i:int = 0; i < len; i++) {
//str = str.split("{" + i + "}").join(arr[i]);
//}
//trace(str);
//Привет Юзернейм, тебе сегодня исполнилось 4 года. Сегодня в завтрашний день могут смотреть не только лишь все. Не скучай, Юзернейм!
//var args:Vector.<String> = new <String>["Юзернейм", "4", "года", "завтрашний", "только лишь все"];
//str = "Привет {0}, тебе сегодня исполнилось {1} {2}. Сегодня в {3} день могут смотреть не {4}. Не скучай, {0}!";
//var length:int = args.length;
//for(var i:int = 0; i < length; i++) {
//var pattern:String = "{" + i + "}";
//while(str.indexOf(pattern) != -1) {
//str = str.replace(pattern, args[i]);
//}
//}
//trace(str);
//Привет Юзернейм, тебе сегодня исполнилось 4 года. Сегодня в завтрашний день могут смотреть не только лишь все. Не скучай, Юзернейм!
testNubideus();//testNubideus:13652
testMikroAcse();//testMikroAcse:9039
testSlavaRa();//testSlavaRa:3495
}
private var _field:TextField;
private function testNubideus():void {
var arr:Array = ["Юзернейм", "4", "года", "завтрашний", "только лишь все"];
var str:String = "Привет %s, тебе сегодня исполнилось %d %s. Сегодня в %s день могут смотреть не %s. Не скучай, {0}!";
var stamp:int = getTimer();
for (var j:int = 0; j < COUNT; j++) {
str.replace(/%s|%d/g, function(substr:String, i:uint, str:String):String {
switch(substr) {
case "%s": return arr.shift();
case "%d": return arr.shift();
}
});
}
_field.appendText("\ntestNubideus:" + (getTimer() - stamp));
}
private function testMikroAcse():void {
var arr:Array = ["Юзернейм", "4", "года", "завтрашний", "только лишь все"];
var str:String = "Привет {0}, тебе сегодня исполнилось {1} {2}. Сегодня в {3} день могут смотреть не {4}. Не скучай, {0}!";
var stamp:int = getTimer();
for (var j:int = 0; j < COUNT; j++) {
var len:int = arr.length;
for(var i:int = 0; i < len; i++) {
str = str.split("{" + i + "}").join(arr[i]);
}
}
_field.appendText("\ntestMikroAcse:" + (getTimer() - stamp));
}
private function testSlavaRa():void {
var args:Vector.<String> = new <String>["Юзернейм", "4", "года", "завтрашний", "только лишь все"];
var str:String = "Привет {0}, тебе сегодня исполнилось {1} {2}. Сегодня в {3} день могут смотреть не {4}. Не скучай, {0}!";
var stamp:int = getTimer();
for (var j:int = 0; j < COUNT; j++) {
var length:int = args.length;
for(var i:int = 0; i < length; i++) {
var pattern:String = "{" + i + "}";
while(str.indexOf(pattern) != -1) {
str = str.replace(pattern, args[i]);
}
}
}
_field.appendText("\ntestSlavaRa:" + (getTimer() - stamp));
}
}
}