![]() |
если говорить о технике программирования на as слышал что конструкция
with object { ... } (особенно если много обращений к св-вам и методам object'а) сильно замедляет алгоритм. for-in так же работает медленнее чем for вообще мне кажется что много-мало сложные функции лучще не полениться, написать самому, нежели исп. встроенные - они медленнее пример был выше про Array.reverse() |
Вот что я вынес из своей работы со флэшем
1. Функции надо вызывать как можно реже. Вобщем, как в ассемблере. Лучше 50 строчек кода накопировать, чем сделать цикл от 1 до 50 2. Обращение к хэшу локальных переменных быстрее чем к глобальным и уж тем более выше, если используется поиск в подхэшах. Потому при передаче данных через аргумент функции (как в примере вверху) все быстрее происходит. Хэш-то получается из одной переменной состоит. Вобщем локальные переменные адресуются быстрее. 3. Лучше создавать промежуточные переменные для хранения адресов на хэш. То есть обращение типа xxx.tr.mx.v+=xxx.tr.mx.dv лучше привести к следующему: var mx:Object=xxx.tr.mx; mx.v+=mx.dv; тем самым мы избавляемся от двух хэш-поисков. Конечно во флэше все супермегаоптимизировано, но когда речь идет о перелопачивании огромных массивов каждое бегание по индексам хэшей вызывает тормоза. 4. От длины имен переменных или функций скорость почти не зависит. Это просто best practice. Все равно все "имена" индексируются и к ним обращаются не по имени, а по цифрам индексов хэшей. 5. for in работает тормозно 6. Array.length тормозной, так что лучше сначала узнать его длину в переменную перед началом цикла 7. Жалеть память броузера зрителя и делать delete неиспользуемых объектов не нужно - все равно никто не оценит. Поэтому например если надо очистить Array - проще взять и переприсвоить ему new Array(); 8. with притормаживает, потому что бегает по with-хэшу, затем по localvar-хэшу, затем по this-хэшу . Одним беганием больше. А ведь в this и with сидят ключи не только переменных, но и функций. Мои выводы зиждятся на собственных наблюдениях и курсах программирования, где мы делали элементарные бинарные индексы |
1. про фунцкии верно, а unroll-нуть цикл в 50 строчек это уж совсем last resort для самого inner loop-а
4. мне казалось, best practice это разумный компромисс между длиной имён и их осмысленностью. в институте нас учили "переменные должны иметь мнемонические названия" 7. мне кажется, это неважно, т.к. в любом случае или сам их удалишь, или рано или поздно garbage collector их удалит for in и with почти не использую. с with-ом вообще стрёмно, его разве что для Drawing API можно использовать, хотя мне сделать var p = my_movie_clip; p.beginFill(... не влом. JhAZZ: вообще, дельные советы! |
Кто то тут говорил что своя реверсия массива быстрее работает... [censored]ЧистоЙ ВОДЫ!!! Я целый час извращался... в раза медленее!
А вот недавно узнал что Math.random тоже в 2-3 раза медленее работает чем random. Вот как... |
Удалил лишние знаки препинания и плохие слова, Скрипун
1) Веди себя культурно,мы в обществе 2) Нервные клетки не востанавливаются |
Стандартный прием - если порядок обращения к элементам массива не важен, то лучше воспользоваться циклом while с обратной итерацией в условии:
Код:
var i = my_array.lendth; |
to Скрипун
Если этот "кто-то" - я, то многое может зависеть от машины и версии плеера. (Возможно если машина довольно быстрая, то разница будет минимальная). У меня целик 1800, плеер 8,0,22,0. Следующий код (в руте) давал довольно разные по значениям листинги: Код:
var arr = [];и соответственно 359 374 359 374 374 358 358 375 374 374 PS Ругаться действительно не хорошо... :) |
P4 3000 (HT)
родной: 1107, 1217, 1170, 1186, 1372, 1310, 1201, 1217, 1201, 1201 кустарный: 265, 249, 265, 266, 249, 265, 250, 249, 250, 265 |
Цитата:
Цитата:
Цитата:
Цитата:
with - это вообще ужасная практика программирования!!!. |
Вложений: 1
Народ коли тут все за убыстренее посмотрите этот код скажите что тут заменить чтоб меньше тормозило...
|
| Часовой пояс GMT +4, время: 09:40. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.