Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.07.2014, 18:43
Профессор
Посмотреть профиль Найти все сообщения от newobject
 
Регистрация: 10.07.2014
Сообщений: 145

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 просто фантастически медленный. Интересно, почему? Тестировал на ноде.

Последний раз редактировалось newobject, 17.07.2014 в 19:41.
Ответить с цитированием
  #2 (permalink)  
Старый 17.07.2014, 19:05
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

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

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


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #3 (permalink)  
Старый 17.07.2014, 19:24
Профессор
Посмотреть профиль Найти все сообщения от newobject
 
Регистрация: 10.07.2014
Сообщений: 145

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

Что по сабжу?
Ответить с цитированием
  #4 (permalink)  
Старый 17.07.2014, 19:28
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

добавь кнопку запуска [js run] и сам тест, чтобы сразу просмотреть результат,
по твоему примеру не видно, что ты
Сообщение от newobject
сделал прогонку 1000000 раз.
Ответить с цитированием
  #5 (permalink)  
Старый 17.07.2014, 19:29
Профессор
Посмотреть профиль Найти все сообщения от newobject
 
Регистрация: 10.07.2014
Сообщений: 145

Сообщение от bes
не видно
Ты что не веришь чтоли?
Ответить с цитированием
  #6 (permalink)  
Старый 17.07.2014, 19:33
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от newobject
Ты что не веришь чтоли?
здесь нерелигиозное учреждение
Ответить с цитированием
  #7 (permalink)  
Старый 17.07.2014, 19:38
Профессор
Посмотреть профиль Найти все сообщения от newobject
 
Регистрация: 10.07.2014
Сообщений: 145

bes,
У меня не работает запуск. Как эту кнопку правильно добавить? просто дописать в откр тег или еще что-то?
Ответить с цитированием
  #8 (permalink)  
Старый 17.07.2014, 19:40
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от newobject
bes,
У меня не работает запуск. Как эту кнопку правильно добавить? просто дописать в откр тег или еще что-то?
с чего ты взял, что не работает?
Ответить с цитированием
  #9 (permalink)  
Старый 17.07.2014, 19:46
Профессор
Посмотреть профиль Найти все сообщения от newobject
 
Регистрация: 10.07.2014
Сообщений: 145

Сообщение от bes
с чего ты взял, что не работает?
Все понял. Я думал, консоль сама откроется. Неудобно сделано.
Ответить с цитированием
  #10 (permalink)  
Старый 17.07.2014, 19:49
Профессор
Посмотреть профиль Найти все сообщения от newobject
 
Регистрация: 10.07.2014
Сообщений: 145

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск