Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Нагрузка на CPU и память (http://www.flasher.ru/forum/showthread.php?t=210888)

Vlad84 21.05.2015 12:52

Нагрузка на CPU и память
 
Какой из вариантов менее затратный и правильный с точки зрения программирования?

1.
Код AS3:

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

2.
Код AS3:

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

3.
Код AS3:

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 (Сообщение 1182654)
Увлекитесь лучше скаутом. Отличный профайлер.

Скаутом? Он у меня дает данные только по ролику, открытому в браузере. Не очень удобно :)

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 (Сообщение 1182672)
Вы просто не умеете его готовить. Это я вам как повар поварёнку говорю.

Может, шеф поделится своим коронным рецептом? :)

dimarik 25.05.2015 18:05

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


Часовой пояс GMT +4, время: 19:24.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.