TextField.appendText() набагато швидше простого додавання

Ви, напевно, помічали попередження Flash IDE “Warning: 3551: Appending text to a TextField using += is many times slower than using the TextField.appendText() method.”, коли Ви намагались додати текст таким чином:

tf.text = tf.text + "some text";
// або tf.text += "some text";

Так от, він не бреше :)

var tf:TextField = new TextField();
tf.textColor = 0x000000;
tf.width = stage.stageWidth;
tf.multiline = true;
tf.autoSize = TextFieldAutoSize.LEFT;
tf.wordWrap = true;
addChild(tf);
tf.text = "";
var textToAppend:String = "Warning: 3551: Appending text to a TextField using += is many times slower than using the TextField.appendText() method.";
var iterations:uint = 200;
var i:uint;

var startTime:int = getTimer();

for(i=0; i<iterations; i++){
	tf.text = tf.text + textToAppend;
}
trace(getTimer() - startTime); // 1313

tf.text = "";
startTime = getTimer();

for(i=0; i<iterations; i++){
	tf.appendText(textToAppend);
}
trace(getTimer() - startTime); // 92

Як видно з трейсів, функція appendText() робить свою справу більш ніж в 14 разів швидше! Хоча, якщо зменшити прорахунки на wordWrap, то результат буде - більш ніж в два рази. Таке станеться, наприклад, якщо ви додасте, в наведеному вище прикладі, “\n” до змінної textToAppend. Але це теж не погано ;)

Таґи: ,

Коментарів: 2 to “TextField.appendText() набагато швидше простого додавання”

  1. JabbyPanda:

    слово “набагато” пишеться разом. Пишу правильно ;)

  2. pirrest:

    Дякую, за виправлення!

Залиште свій коментар