webew
Войти » Регистрация
 
JavaScript

крохотный benchmark браузеров

13 сентября 2011, 5:23
Автор: 1234ru
Так получилось, что актуально мне было поизмерять, с какой скоростью Javascript проходит по циклу.

Результаты измерений отражают интересные соотношения в быстродействии браузеров.

Для измерений использовался простейший код - прибавление переменной:

var start,
    end,
    i ;
   
start = new Date().getTime(); // количество милисекунд с 01.01.1970

for (i = 1; i < 1000000; i++) // миллион раз
   ; // ничего не делаем; просто цикл

end = new Date().getTime();

alert(end - start);


Соответственно, результаты в милисекундах были получены следующие:

Firefox 6.0.2 - 11
Chrome 13.0.782.220 m - 16
Opera 11.61 - 3
IE 8 (отдельный) - 375
IE 8 (IE Tester) - 390
IE 7 (IE Tester) - 440
IE 6 (IE Tester) - 440

http://webew.ru/f/hVuRIAdR.png


Интересный факт - сравнение с переменной занимает больше времени, чем сравнение с константой: если вместо i < 1000000 завести переменную max, присвоить ей миллион и сравнивать уже как i < max, время работы кода увеличилось, например, в IE 6 примерно 25% (вместо 440 мс стало где-то 550).


Тестирование проводилось на AMD Athlon 3200++ Socket 754 (т.е. довольно тормозном по современным понятиям компьютере) под WinXP SP3.


Разумеется, нужно сказать, что в реальных жизненных ситуациях разница в производительности может иметь другое соотношение.

Вообще операции, не связанные с изменением внешнего вида документа или сетевой активностью, нередко выполняются столь быстро, что о них не стоит и думать. Например, даже Internet Explorer справился с поиском фрагмента в наборе из 1000 строк, каждая из которых была длиной 20 Кб, за несколько десятков милисекунд. Поэтому при проектировании клиентских приложений на языке Javascript основное внимание следует уделить программированию манипуляций с DOM-деревом и AJAX-запросов.
Добавить комментарий
NO USERPIC

rgbeast

Это не совсем честный тест. Так как здесь подчеркнуто ничего не делается, интерпретатору оставляется возможность вообще выкинуть этот цикл из исполнения. Кроме того, возможно, различается реализация именно циклов, а не самих операций. Если написать в цикле a = (a+i)/2, тогда тест будет более честным.
13.09.2011, 19:05
Ответить

1234ru

for (i = 1; i < 1000000; i++)
   a = (a + i) / 2;


Соотношение не сильно поменялось:

Firefox - 50
Opera - 16
Chrome - 60
IE 6 (IE Tester) - 1100
IE 7 (IE Tester) - 1100
IE 8 (IE Tester) - 900
IE 8 (отдельный) - 900
То, что не убивает нас, делает нас инвалидами.
15.09.2011, 00:22
Ответить
© 2008—2024 webew.ru, связаться: x собака webew.ru
Сайт использует Flede и соответствует стандартам WAI-WCAG 1.0 на уровне A.
Rambler's Top100

Реклама: