PDA

Просмотр полной версии : Нагрузка на CPU и память


Vlad84
21.05.2015, 12:52
Какой из вариантов менее затратный и правильный с точки зрения программирования?

1.
private var rect:Rectangle;
public function mirrored():Rectangle {
rect = new Rectangle(0, 0, 10, 10);
return rect;
}

2.
public function mirrored():Rectangle {
var rect:Rectangle = new Rectangle(0, 0, 10, 10);
return rect;
}

3.
public function mirrored():Rectangle {
return new Rectangle(0, 0, 10, 10);
}


PS: переменная rect больше нигде не используется.

caseyryan
21.05.2015, 13:42
Третий. Почему не первый: потому что обращение к полю класса, всегда медленнее, чем обращение к локальной переменной.
Почему не второй: потому что нет смысла в данном случае сначала создавать переменную, а потом опять ее брать и возвращать, если других манипуляций с ней не планируется

Но это все такие мелочи, что стоит предавать им значение, только если производительность критически важна и нужно выжать каждую каплю

Vlad84
21.05.2015, 16:50
Спасибо, именно эти мелочи сейчас подчищаю и каждая капля на счету :)

dimarik
21.05.2015, 19:37
Не заметите улучшения производительности именно из-за такого рода оптимизации. Разница прочувствуется только на сотнях миллионов операций. Увлекитесь лучше скаутом. Отличный профайлер.

Vlad84
22.05.2015, 13:15
Увлекитесь лучше скаутом. Отличный профайлер.Скаутом? Он у меня дает данные только по ролику, открытому в браузере. Не очень удобно :)

dimarik
22.05.2015, 13:49
Вы просто не умеете его готовить. Это я вам как повар поварёнку говорю.

nuToH
25.05.2015, 12:08
Самым оптимальным решением будет сделать пул обьектов для Rectangle. т.к. самая трудоёмкая операция в вашем коде это "new" создание обьекта. В Actionscripte нет структур, поэтому большинство, ну например, физ движков реализуют такой пул для обьектов типа Point, Vector, Rectangle и т.д.

Vlad84
25.05.2015, 15:30
Вы просто не умеете его готовить. Это я вам как повар поварёнку говорю.Может, шеф поделится своим коронным рецептом? :)

dimarik
25.05.2015, 18:05
Можно воспользоваться связкой ScoutEnabler и Fiddler 2. Enabler'ом пройдитесь по флешке из кеша, затем фиддлером подмените ее при загрузки из вэба. Scout автоматом подцепит ее и покажет всю статистику, включая память и тайминги.