Бесплатно скачать Adobe Flash Player
Flash Ripper RSS Readers

Сколько памяти расходует небольшой класс в ActionScript3

Вчера в обсуждении экономии памяти за счет использования типа int вместо типа Number Вадим Войтюк поднял интересный вопрос: сколько памяти уходит на использование самого класса PointVO, участвовавшего в тестировании?

Я выяснил, сколько памяти отъедают экземпляры класса PointVO. Без PointVO расход пямяти на хранение двух миллионов переменных типа Number составляет 30Мб, что почти в два раза меньше 53Мб — памяти, расходуемой с использованием PointVO.
Время — 618 Мсек против 1226, т.е. в 1.9 раза быстрее без использования класса PointVO.
Чистая разница расхода памяти: 53Мб - 30Мб = 23Мб.

То есть: 23Мб памяти расходуется на хранение одного миллиона экземпляра классов PointVO, каждый из которых имеет два свойства x и y типа Number.

А для типа данных int расход памяти без использования PointVO составил 13Мб, что в три с половиной раза меньше 45Мб для случая с использованием PointVO.
Время — 441 Мсек против 1226, т.е. быстрее в 2.7 раза без PointVO.
Чистая разница расхода памяти: 45 - 13 = 32Мб.

Возникает интересный вопрос: почему в случае с типом int чистая разница расхода памяти составила 32Мб, а в случае с типом Number — всего 23Мб? Возможно, потому, что класс PointVO для хранения переменных x и y типа int использует для них дополнительную обертку вокруг типа Number, как пишет Василий здесь? А массив, значения которого не типизированы, никаких оберток не использует, так? Получается, на два миллиона оберток типа int вокруг типа Number уходит 9 Мб оперативной памяти. То есть приблизительно 5 байт на обертку.

Далее — исходный код теста для интересующихся.

Исходный код теста для переменной типа Number


var startTime:uint;
var memory:uint;
var time:uint;
var memoryAverage:uint;
var timeAverage:uint;
var cycles:uint = 10;
var pCount:uint = 1000000;
var i:uint;
var j:uint;
var pArray:Array;
var randCoord:Number;
for(j; j < 10; j++)
{
startTime = getTimer();
pArray = new Array();
for(i=0; i {
randCoord = Math.random() * 10000000 / 10000;
pArray.push(randCoord); /* pArray.push(int(randCoord)); */
pArray.push(randCoord); /* pArray.push(int(randCoord)); */
}
memoryAverage += memory = System.totalMemory;
timeAverage += time = getTimer() - startTime;
trace("Memory: " + memory);
trace("Time: " + time);
}
trace("Memory average: " + Math.round(memoryAverage / cycles));
trace("Time average: " + Math.round(timeAverage / cycles));
trace("Type: " + (pArray[0] is int) + " var: " + pArray[0]);

Писал Rost, 1 Ноябрь 2007 14:06

Найдены баги:

Интересные статьи.
И у меня такой вопрос/предложение.
Если ли разница как называть переменную, коротко (x), длинно (x_bukva_alfavita).
Хотелось бы увидеть такой же анализ и тесты по памяти и размеру swf.
Для переменных локальных, глобальных, public, private, static, const...
:)

Vee - 1 Ноябрь 2007 23:22

2Vee:
Разницы в скорости быть не должно. Будет небольшая разница в размере выходного файла (для as2 точно, насчет as3 думаю примерно также).

anatolb_# - 2 Ноябрь 2007 15:09



Это запись из категории 'AS3'. 10 еще cвежих:

Архивы по категориям:

3D-18, Adobe AIR-38, Animation-1, Apache Ant-1, Architecture-1, ARP-1, Art-26, Articles-26, AS3-57, Books-9, Business-3, Cairngorm-3, CI-1, Classes-10, Coding-31, Community-118, Components-19, Contests-30, conventions-1, Cool-Job-10, Debug-21, Design-28, Development-84, ecology-4, EMO-2, Events-17, Extensions-2, FAQ-9, FDS-1, Flash and html-8, Flash Player-38, Flash Updates-12, flash-on-devices-1, Flash-scene-1, flash10-4, FlashLite-2, Flex-49, Flex 2-80, flex4-3, flexcamp-2, Flickr-1, FMS-2, FPUG-61, frameworks-1, Games-20, Good Job!-44, HaXe-16, Health-2, Humor-11, Ideas-14, IV-1, JavaScript-2, Job-30, JSFL-8, Links-2, Linux-3, Maps-1, Math-8, Money-16, music-1, MXML-1, Open Source-16, Optimization-4, parenting-3, Patterns-2, Personalities-27, Philosophy-4, Politics-1, posters-1, Preloading-3, Productivity-10, PureMVC-11, Pv3d-1, Rafpug-5, Red5-3, Remoting-11, Resources-21, Ruby-6, SAAS-1, Security-11, SEO-9, Silverlight-7, Sound-3, sport-4, Strategy-122, Tamarin-2, Tools-113, Training-3, Trash-8, URAFPUG-14, Urgent-1, Usability-6, Video-6, VoIP-7, Wallop-1, Wishlist-3, XML-1, Архив всех записей (большой)

За последние месяцы:

Ноя 2008: Ноябрьская встреча RAFPUG 12 — для креативных, В продолжение темы флэш-блогов, весь Ноя

Окт 2008: Ура — вторая лицензия Alternativa3D уезжает в Киев!, Влещь на глагне III IIIIIII?, весь Окт

Сен 2008: Встречайте Open Source Flash Media Server — Mammoth, Срочно нужен толковый Flex-разработчик в Харькове (+Java), весь Сен

Авг 2008: Flex Gangsta Rap Video WTF Bro?, 27 сентября — встреча UAFPUG во Львове и плюшки от Adobe, весь Авг

Июл 2008: Тенденции среди работодателей: Adobe Flex, Adobe AIR, Silverlight, Спорт спасет красоту, которая спасет мир!, весь Июл

Июн 2008: Попытка предварительных выводов о встрече аниматоров, Онлайн трансляция встречи аниматоров в Донецке, весь Июн





Примечания:
Статус документа
: в процессе
   2002-2007 Производство: Рост Прибыли · О проекте · Подписка на новости (RSS)