27.12.2013, 07:51
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,583
|
|
Используй forEach и проч. когда удобно. Если производительность упрётся именно в этом месте - всегда можно будет переписать циклом. Но скорее всего этого никогда не понадобится.)
__________________
29375, 35
|
|
27.12.2013, 08:32
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Antonius, если писать код руководствуясь только скоростью работы, то получится трудно-поддерживаемая груда кода. Кроме того, разные варианты отрабатывают в разных браузерах по-разному, или даже в разных версиях одного браузера.
__________________
В личку только с интересными предложениями
|
|
27.12.2013, 08:45
|
Аспирант
|
|
Регистрация: 30.11.2013
Сообщений: 42
|
|
Сообщение от danik.js
|
Antonius, если писать код руководствуясь только скоростью работы, то получится трудно-поддерживаемая груда кода. Кроме того, разные варианты отрабатывают в разных браузерах по-разному, или даже в разных версиях одного браузера.
|
Да, приходится постоянно балансировать между читаемостью/поддерживаемостью и скоростью.
Однако в браузерах, доступных мне (okouser, это последние версии) тест http://jsperf.com/for-vs-foreach/111 показывает проигрыш forEach, в разной степени, иногда с небольшой разницей, иногда с внушительной, но он медленнее.
Кстати, да, еще можно руководствоваться такими соображениями — если действия, выполняемые в каждой итерации цикла, достаточно «дорогие» по производительности, то накладные расходы на организацию самого обхода массива существенного влияния на время выполнения не окажут.
|
|
27.12.2013, 15:27
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
okouser, по сути если нужно обработать массив на пару тысяч элементов то лучше использовать for (что вообще не является хорошо ), а так разница в пару милесекунд http://jsfiddle.net/eT25E/
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
27.12.2013, 16:00
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Я в своё время заморочился, и написал свою реализацию forEach с JIT компиляцией, по скорости равна циклам.
Последний раз редактировалось kobezzza, 27.12.2013 в 16:04.
|
|
27.12.2013, 17:19
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
kobezzza, поделишься?)
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
27.12.2013, 17:30
|
Аспирант
|
|
Регистрация: 30.11.2013
Сообщений: 42
|
|
Сообщение от kobezzza
|
Я в своё время заморочился, и написал свою реализацию forEach с JIT компиляцией, по скорости равна циклам.
|
Откройте секрет, как можно со стороны скрипта влиять на JIT?
|
|
27.12.2013, 18:18
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от cyber
|
kobezzza, поделишься?)
|
Как закончу работу над Snakeskin, то опубликую (там кое что допилить надо ещё и тестов понаписать).
|
|
27.12.2013, 18:24
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от Antonius
|
Откройте секрет, как можно со стороны скрипта влиять на JIT?
|
Я написал свой, он производит инлайнинг, декомпозицию, дополнительные кеширования и т.д. что в итоге позволяет нативному JIT максимально эффективно обрабатывать такие конструкции, в январе планирую описать в подробной статье, т.к. штука интересная оч получилась.
|
|
27.12.2013, 22:37
|
Аспирант
|
|
Регистрация: 30.11.2013
Сообщений: 42
|
|
Ждем января, значит Не пропустить бы.
|
|
|
|