27 мар. 2013 г.

DOM performance comparison: jQuery vs Prototype

http://jsperf.com/dom-attributes/3

Скорость работы с атрибутами элементов DOM (вызовов в секунду)

UserAgent          read           remove         write
                   Proto  jQuery  Proto  jQuery  Proto  jQuery

Chrome 25.0.1364  1,863K  1,046K   842K    177K   375K    499K
Firefox 19.0      1,137K    774K   452K    108K   191K    207K
IE 8.0               34K     55K    29K     27K    24K     38K
IE 9.0              528K    267K   472K    130K   268K    205K
Opera 12.14       1,159K    744K   438K    223K   295K    448K

Скорость работы с классами элементов DOM (вызовов в секунду)

UserAgent          add            has            remove
                   Proto  jQuery  Proto  jQuery  Proto  jQuery
Chrome 25.0.1364    985K  400K  611K  922K  638K  2,908K
Firefox 19.0    457K    392K   255K    419K   458K  1,167K
IE 8.0               20K     31K    15K   62K    23K    95K
IE 9.0  363K  159K  246K    365K  223K  929K
Opera 12.14     518K  410K  300K  560K  511K  1,366K

http://jsperf.com/dom-events

Скорость работы с событиями (вызовов в секунду)

UserAgent           fire             on/off
                    Proto  jQuery    Proto  jQuery
Android 4.0.4       2,565     662    1,530   1,955
Chrome 25.0.1364  128,277  28,647   69,639  94,823
Firefox 19.0       35,793  13,892   53,441  39,665
IE 8.0              5,389   4,691    5,032  10,384
IE 9.0             68,532  19,681   55,858  70,473
Opera 12.14        48,960   3,283  102,913  85,031


13 мар. 2013 г.

5 редко используемых функций underscore.js


  1. _.result(object, property) - получение значения поля/функции по имени (для поля возвращается его значение, для метода возвращается результат его выполнения)
  2. _.random([min=0], max) - целое случайное число в диапазоне [min, max] или [0, max]
  3. _.has(object, key) - безопасная проверка на hasOwnProperty (object.hasOwnProperty(key) может вернуть неверный результат в случае перекрытия hasOwnProperty, например так: var object = {hasOwnProperty: function() {return false;}})
  4. _.tap(object, interceptor) - эквивалент кода interceptor(object); return object; (для встраивания в call chain вызова функций, не поддерживающих chaining)
  5. _.compose(*functions) - композиция декораторов (иногда помогает развернуть иерархию вызовов типа a(b(c(x))))