Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.04.2013, 11:51
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Node.js прикалывается?
Суть проблемы:
setTimeout(function work(){
	var time = +new Date();

	for (var i=0;i<10000000;i++){}
	time = +new Date() - time;
	console.log(time+'ms',(time/40)+'%'); // /40 т.к. 4 ядра
	setTimeout(work,1000);

	},1000);


Запускаю и вижу:

16ms 0.4%
16ms 0.4%
16ms 0.4%
16ms 0.4%
16ms 0.4%
16ms 0.4%
16ms 0.4%
16ms 0.4%
16ms 0.4%
16ms 0.4%
40ms 1%
40ms 1%
40ms 1%
40ms 1%
40ms 1%
...

C чем связано увеличение времени исполнения после 10ой секунды? Знает кто? И куда можно обратиться?
Причем частота запросов не играет роли. Что через секунду что каждые 2-3 секунды. После 10 раза идет повышение времени в 4 раза.
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт

Последний раз редактировалось PeaceCoder, 27.04.2013 в 12:00.
Ответить с цитированием
  #2 (permalink)  
Старый 27.04.2013, 12:14
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Таймаут чуть чуть не так работает в ноде относительно процесса, как на клиенте привыкли. Сборщика мусора время занимает.

Последний раз редактировалось dmitriymar, 27.04.2013 в 13:59.
Ответить с цитированием
  #3 (permalink)  
Старый 27.04.2013, 14:00
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

Используй Date.now()
__________________
.ня
Ответить с цитированием
  #4 (permalink)  
Старый 28.04.2013, 05:17
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Сообщение от dmitriymar
Сборщика мусора время занимает.
О каком сборщике может идти речь, когда выделено всего 10 переменных. И во вторых. Сборщик срабатывает не так быстро.
Сообщение от tenshi
Используй Date.now()
Да. Все корректно заработало.
Хм. Знаю что это аналог new Date().getTime() но какая разница между +new Date()

Цитата:
15.9.3.3 new Date()

Свойство [[Prototype]] создаваемого объекта устанавливается равным первоначальному объекту-прототипу Date, т.е. тому, который представляет собой первоначальное значение Date.prototype (см. раздел 15.9.4.1).

Свойство [[Class]] создаваемого объекта устанавливается в "Date".

Значение свойства [[Value]] создаваемого объекта устанавливается равным текущему времени (по UTC).
в чем разница?
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт

Последний раз редактировалось PeaceCoder, 28.04.2013 в 05:27.
Ответить с цитированием
  #5 (permalink)  
Старый 28.04.2013, 09:33
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от PeaceCoder
О каком сборщике может идти речь, когда выделено всего 10 переменных. И во вторых. Сборщик срабатывает не так быстро.
да уж, а у функций экземпляры всякий раз не создаются? не ?

Последний раз редактировалось dmitriymar, 28.04.2013 в 09:52.
Ответить с цитированием
  #6 (permalink)  
Старый 28.04.2013, 18:54
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

Переменные не выделяются, они существуют всегда вместе с функцией. А вот объекты постоянно создаются и удаляются сборщиком мусора.
__________________
.ня
Ответить с цитированием
  #7 (permalink)  
Старый 01.05.2013, 19:53
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Сообщение от tenshi
А вот объекты постоянно создаются и удаляются сборщиком мусора.
Точно. Но все же. Date.now() я так понял дает сразу значение. new Date().getTime() тоже самое но тут проскакивает создание обьекта.
Подставив второй вариант время тоже самое что и первый.
Глючность только с +new Date(). Почему? это баг или не пойму. Может кто сталкивался...
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
Ответить с цитированием
  #8 (permalink)  
Старый 02.05.2013, 15:54
Новичок на форуме
Отправить личное сообщение для elochka25252525 Посмотреть профиль Найти все сообщения от elochka25252525
 
Регистрация: 02.05.2013
Сообщений: 3

Мерси за полезный опыт
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Недопонимание философии Node.js Voronar AJAX и COMET 10 25.02.2013 14:00
Востребованность разработчиков на Node.js danik.js AJAX и COMET 7 08.12.2012 22:49
Разработчик Node.js в США (Сиэтл) Akvelon Работа 0 29.08.2012 10:47
Javascript-разработчик (ExtJS, node.js), 50 000 - 80 000, СПб IrinaS Работа 0 03.04.2012 20:40
Node.js Kolyaj Серверные языки и технологии 49 24.05.2010 22:29