![]() |
Как после компиляции выглядят ссылки на свойства
Всегда думал, что если в цикле обращаться к свойству композитносозданного объекта,
то лучше это значение сохранить в локальную переменную. Думал, что обратится к локальной переменной быстрее, чем к свойству, путь к которому состоит из нескольких ссылок. А начал проверять и все оказалось наоборот. Вот результаты при чтении - Код AS3:
Код AS3:
|
Я не совсем по теме, но мне бросилось в глаза то, что тест вы проводите в конструкторе и скорее всего в дебагплеере, а это совсем неправильный подход.
|
samana а Вы не подскажите, как правильно проводить?
Просто мне и показывали такой вариант и у других я видел подобное... |
Нужно просто делать в релиз плеере (результаты например выводить в текстовое поле). Время засекаете перед началом теста (в начале метода например или цикла), а не при создании свойства. И желательно тест проводить не один раз при запуске, а на enterFrame. И посмотреть средний результат.
|
Сделал так -
Код AS3:
Код AS3:
На "получить значение" - 5900 против 5000... |
Вот это номер! Нужно срочно Джексондунстану сказать.
|
>> На "присвоить значение" - 5350 локальная переменная, против 5000 свойства объекта.
померяй время 'пустого' цикла и будешь неожиданно удивлен, что эти 5000 ( а может случится, что и большеЖ) на него и уходят.. я не знаю наверное, но полагаю, что сегодняшние версии плеера достаточно оптимизированы для доступа к полям объектов, чтобы вручную здесь что-то выгадывать естественно, это не касается доступа к динамическим свойствам и акцессорам - там время на порядок больше и в этом случае сохранять в локальной переменной есть смысл |
Сделал тест на ентерфраме и всё вроде бы встало на свои места.
Чтение показывает одинаковое время, а запись вот в таком виде, даже вредит, что склоняет к правоте silin'a. И хочется ещё уточнить, какой из всех вариантов замера, по Вашему самый лучший, если он тут вообще есть? Код AS3:
Код AS3:
|
>>хочется ещё уточнить, какой из всех вариантов замера, по Вашему самый лучший
по мне так самый лучший это самый понятный, ну типа в цикле то, что интересует и все. а эти штуки с while внутри for или new TestSpeed(print) и прочие таймеры я что-то не могу разгадать Добавлено через 3 минуты Код AS3:
|
TestSpeed это класс, где скорость и замеряется, я его в отдельный вынес класс вынес и поставил таймер, только для того, чтобы дать плееру, как следует запустится. Если делаю, как в первом примере, то и разница такая же. А цикл в цикле сделал, потому что читал где-то про разницу работы кода в зависимости от кол-ва итераций. Типа, один и тот же код будет медленнее работать при 100 итераций и быстрее при 1 000 000. Но я тестирую код, который миллион не когда не увидит и хотелось бы точнее уточнить, как он на малых кол-вах итераций работает. Вот и пришлось цикл в цикле делать. А скаут, разницы во времени такую мизерную, как-будто не замечает, а я именно за неё и борюсь.
Код AS3:
|
| Часовой пояс GMT +4, время: 18:52. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.