Показать сообщение отдельно
  #16 (permalink)  
Старый 14.08.2014, 13:11
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от ixth Посмотреть сообщение
Как насчет jsperf? Первое, что нагуглилось: http://jsperf.com/array-some-vs-loop
jsperf неплохой сервис, но многие не понимают, что примеры для теста он сам запускает в цикле, т.е. когда мы тестируем циклы и итераторы, то у нас на самом деле тестируется выполнение итераторов и циклов внутри цикла, а если более точно сказать - скорость инициализации + скорость выполнения и это может полностью исказить результат теста.

Для тестирования именно скорости итераций лучше самом написать простой тест, как например тут https://github.com/kobezzza/Collecti...ter/benchmarks

Цитата:
some у меня отрабатывает в полтора раза быстрее filter, но все еще в два раза медленнее, чем for:
Я хоть убей не понимаю, зачем костылить в своём коде и делать оптимизации, которые "завтра" с обновлением VM могут стать абсолютно бесполезными (я уже молчу про части, где часть на циклах, а часть итераторах), но при этом делают наш код ужасным. Есть же готовые либы, которые инкапсулируют в себе все все оптимизации и работают супер быстро, но при этом дают простой и удобный интерфейс, и не нужно самому ничего изобретать.

Я уже молчу про то, что нативные интерфейсы алгоритмически убоги и работают только с массивами. Очень частый пример, нужно сделать фильтр, потом мап, а потом взять первые 10 результатов, т.е.

filter().map().slice()


Алгоритмическая сложность просто ужасна, думаю всем это понятно. Гораздо лучше сделать:

map(..., {filter(), slice()})


Т.е. всё в один проход вместо 3-х
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 14.08.2014 в 13:19.
Ответить с цитированием