Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   while vs for (https://javascript.ru/forum/misc/48809-while-vs.html)

newobject 17.07.2014 18:43

while vs for
 
сделал прогонку 1000000 раз.

test=function(fu, i, name){
console.time(name)
while(--i){fu()}
console.timeEnd(name)
}

arr="foo bar baz flk jdjdj dkkdke jdj".split(" ")
	 
	tst1=function(){
	for(var i=0; i<arr.length; i++){arr[i]}
	}
	 
	tst1_a=function(){
	for(var i=arr.length; i>-1; i--){arr[i]}
	}
	 
	tst2=function(){
	var i = arr.length
	while(i--){arr[i]}
	}
dflt=1000000
test(tst1, dflt, "ts1")
test(tst1_a, dflt, "ts1_a")
test(tst2, dflt, "ts2")

//ts1: 23ms
//ts1_a: 263ms
//ts2: 41ms


Как видно, while сливает в 2 раза почти, но 2-й for просто фантастически медленный. Интересно, почему? Тестировал на ноде.

bes 17.07.2014 19:05

Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

newobject 17.07.2014 19:24

bes,
Отформатировал. Только не пойму, зачем это. Что там буков чтоли не видно?

Что по сабжу?

bes 17.07.2014 19:28

добавь кнопку запуска [js run] и сам тест, чтобы сразу просмотреть результат,
по твоему примеру не видно, что ты
Цитата:

Сообщение от newobject
сделал прогонку 1000000 раз.


newobject 17.07.2014 19:29

Цитата:

Сообщение от bes
не видно

Ты что не веришь чтоли?

bes 17.07.2014 19:33

Цитата:

Сообщение от newobject
Ты что не веришь чтоли?

здесь нерелигиозное учреждение ;)

newobject 17.07.2014 19:38

bes,
У меня не работает запуск. Как эту кнопку правильно добавить? просто дописать в откр тег или еще что-то?

bes 17.07.2014 19:40

Цитата:

Сообщение от newobject
bes,
У меня не работает запуск. Как эту кнопку правильно добавить? просто дописать в откр тег или еще что-то?

с чего ты взял, что не работает?

newobject 17.07.2014 19:46

Цитата:

Сообщение от bes
с чего ты взял, что не работает?

Все понял. Я думал, консоль сама откроется. Неудобно сделано.

newobject 17.07.2014 19:49

109/62/79 в лисе показало. Странно. То есть, в лисе обычный цикл медленней.


Часовой пояс GMT +3, время: 10:55.