Это, конечно, оффтоп, но почему такое поведение? Допустим, я заэвалил этот код и V8, после этого, должен применить свои оптимизации, разве не так? Тело цикла, ведь, не эвалится на каждой итерации. Разница в скорости — 20 раз!
Дайте что-нибудь почитать, а то совсем чайником себя почувствовал впервые за последний год.
Может уж лучше потратить лишнюю сотню-другую символов и сделать функцию легко читаемой,
Идея в том, чтоб сжать функцию настолько сильно, насколько это возможно, в ущерб читаемости (как в js1k). Для остального есть jQuery-подобные крупные библиотеки или возможность форка для тех, кому очень надо.
быстрой
А что со скоростью не так? Напротив, применяется как можно меньше операторов и методов.
и без потенциальных проблем?
Какие потенциальные проблемы вы можете встретить сейчас?
Год-другой и будет доступны, например, SIMD и типизированые объекты со своим результатом typeof длиннее 7 букв.
Во-первых, как только SIMD появится в стабильной ветке хотя бы в одном браузере, этот момент будет учтен. Во-вторых это очень узкий юз-кейс. Я не представляю, кто может догадаться передать SIMD тип в эту функцию. В крайнем случае, вы получете ошибку float32x4 is not a function (или типа того) и в стеке увидете, где ошибка вызвана.
Я имею в виду, сколько бы ни было конкурентов в виде фреймворков, крутых и современных замен, jQuery всегда занимает свою нишу, потому что:
а) Она простая. Любой новичок, который знает CSS может с ней разобраться.
б) Она популярна.
в) Она предсказуема. Взять хотя бы делегированные события, которые невероятно сложно заставить работать так, как обычные события (например, заставить работать stopPtopagation так, как он работает с неделегированными событиями).
А всё остальное (в том числе и bala.js) — для тех, кого достало и для тех, кто хочет писать самый быстрый и самый контроллируемый код, т. е. для более-менее опытных разработчиков. Новички и консерваторы («бородатые» новички) будут на рынке веб разработки всегда.
Кстати, в защиту jQuery, за последние полгода я заюзал одну функцию из библиотеки — .parseHTML. Ни один парсер, в том числе, нативный (document.implementation.createDocument) не смог так точно распарсить HTML документ, как это сделал jQuery.
Честно говоря, я и предположить не мог, что мой пост вызовет столько срача с пожеланиями мне отправиться в больницу, обвинениями меня во вредительстве, вопросами «откуда вы такие беретесь». Любой инструмент нужно использовать тогда, когда в нём есть необходимость. Для 99% проектов нативный DOM выполняет свою задачу лучше, чем сторонняя библиотека. Это та мысль, которую мне хотелось донести.
Дайте что-нибудь почитать, а то совсем чайником себя почувствовал впервые за последний год.
xxx: 2805.133ms
yyy: 2799.653ms
typeof s == 'function'
.На jsperf не люблю ориентироваться. Лучше бенчмаркать такие вещи в консоли:
(разницы почти нет)
А что со скоростью не так? Напротив, применяется как можно меньше операторов и методов.
Какие потенциальные проблемы вы можете встретить сейчас?
Во-первых, как только SIMD появится в стабильной ветке хотя бы в одном браузере, этот момент будет учтен. Во-вторых это очень узкий юз-кейс. Я не представляю, кто может догадаться передать SIMD тип в эту функцию. В крайнем случае, вы получете ошибку float32x4 is not a function (или типа того) и в стеке увидете, где ошибка вызвана.
Во-первых, с Новым Годом. Во-вторых, функция дожата до 377 символов, что меньше чем код отслеживания Google Analytics.
а) Она простая. Любой новичок, который знает CSS может с ней разобраться.
б) Она популярна.
в) Она предсказуема. Взять хотя бы делегированные события, которые невероятно сложно заставить работать так, как обычные события (например, заставить работать stopPtopagation так, как он работает с неделегированными событиями).
А всё остальное (в том числе и bala.js) — для тех, кого достало и для тех, кто хочет писать самый быстрый и самый контроллируемый код, т. е. для более-менее опытных разработчиков. Новички и консерваторы («бородатые» новички) будут на рынке веб разработки всегда.
Честно говоря, я и предположить не мог, что мой пост вызовет столько срача с пожеланиями мне отправиться в больницу, обвинениями меня во вредительстве, вопросами «откуда вы такие беретесь». Любой инструмент нужно использовать тогда, когда в нём есть необходимость. Для 99% проектов нативный DOM выполняет свою задачу лучше, чем сторонняя библиотека. Это та мысль, которую мне хотелось донести.