Решил провести небольшой тест производительности своего JavaScript framework’а «js-core». Для сравнения, конечно же, взял «jQuery», который хорошо знаю и имею отчетливое представление о его работе.
Конечно, «js-core» не столь функционален, как «jQuery», поэтому я решил провести тест, на примере, который можно записать практически одинаково и в моем framework’е и в «jQuery».
js-core:
$.ready(function() {
for(var i = 0; i < 1000; i++)
$.n('pre')
.addClass('xxx')
.text(i)
.appendTo(document.body);
var timeAfter = new Date();
$.n('p')
.text(timeAfter.getTime() - timeBefore.getTime())
.prependTo(document.body);
});jQuery:
$(document).ready(function() {
for(var i = 0; i < 1000; i++)
$('<pre></pre>')
.addClass('xxx')
.text(i)
.appendTo(document.body);
var timeAfter = new Date();
$('<p></p>')
.text(timeAfter.getTime() - timeBefore.getTime())
.prependTo(document.body);
});В первую строку каждого framework’а был добавлен следующий код:
var timeBefore = new Date();
Конфигурация компьютера, на котором производился тест:
- процессор: Intel Pentium 4 (3000MHz/512kb/HT);
- метеринская плата: Epox на базе i865PE (fsb 1000MHz);
- память: 2×512Mb (DDR PC-3200/dual channel);
- ОС: Windows XP Service Pack 2.
В общем, древний компьютер, приобретенный в далеком 2003 году.
Для тестирования были использованы следующие имеющиеся на тестовом компьютере браузеры:
- Internet Explorer 6 (из пакета MultipleIEs);
- Internet Explorer 8 beta 2;
- Mozilla FireFox 3.0.1;
- Opera 9.52 сборка 10108;
- Safari 3.1 сборка 525.13;
- Google Chrome 0.2.149.29.
Страницы открывались через протокол «file:», т. е. не использовался никакой веб-сервер. Для каждого framework’а на всех браузерах проводилось по 10 попыток загрузки, повторяемых нажатием клавиши «F5», записывалось время, выдаваемое скриптом. Затем было посчитано среднее арифметическое для каждого браузера. XHTML-страницы содержали только необходимые теги, для подключения скриптов и пустое тело <body>.
| IE6 | IE8b2 | FireFox 3.0.1 | Opera 9.52 | Safari 3.1 | Google Chrome 0.2 | |
|---|---|---|---|---|---|---|
| js-core | 516 | 478 | 212 | 134 | 86 | 103 |
| jQuery | 2880 | 2314 | 1272 | 636 | 716 | 621 |

Как видим «js-core» в данном тесте оказался гораздо быстрее «jQuery», что меня, конечно, очень сильно порадовало Заметьте, какой отрыв «js-core» от «jQuery» в тестах IE. «Opera», «Safari» и «Google Chrome» оказались самыми быстрыми в работе с DOM, недалеко от них «FireFox», ну а IE как всегда…