Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Поиск по массиву объектов (https://javascript.ru/forum/misc/49427-poisk-po-massivu-obektov.html)

Pavel M. 14.08.2014 14:07

Цитата:

Сообщение от kobezzza
никогда не делай бенчмарки через консоль отладчика, т.к. он отключает использование JIT компилятора и результат замеров может значительно отличаться

сделал без консоли

результат почти тот же в Хроме, FF

var timeStart,
	i,
	maxItems = 1e6,
	arr = [],
	needKey = 500137, // где-то в середине
	myArr;

// генерим массив
for (i = 0; i < maxItems; i += 1) {
  arr.push({key: i, label: i + ''});
}

// test filter
timeStart = +(new Date());
myArr = arr.filter(function (item) {
  return (item.key === needKey);
});

alert('filter ms: ' + (new Date() - timeStart));

// test цикл
myArr = [];
timeStart = +(new Date());

for (i = 0; i < arr.length; i += 1) {
   if (arr[i].key === needKey) {
	  myArr.push(arr[i]);
	  break;
   }
}

alert('for ms: ' + (new Date() - timeStart));

kobezzza 14.08.2014 14:16

Цитата:

А подключать либу на 17кб просто чтобы не париться - неохота)
Во первых из коробки есть аж 3 сборки, и одна из них весит 9кб и включает только итераторы. Во вторых очень просто делать свои сборки и обо всём этом написано в доке.

Цитата:

Ну это потому что ты написал эту либу)))
Я юзаю много либ, просто эта написана мной, но это не суть, я просто привёл как пример.

tsigel 14.08.2014 14:16

Pavel M.,
Ваш тест алгоритмически не верен. Фильт проходит весь массив а фор - часть. Хотите такой тест сравнивайте с some

kobezzza 14.08.2014 14:18

Цитата:

результат почти тот же в Хроме, FF
Иногда мне кажется, что меня не слушают...

Цитата:

т.к. он отключает использование JIT компилятора и результат замеров может значительно отличаться.
т.е. чем сложнее пример, тем выше может быть разница.

Pavel M. 14.08.2014 14:59

Цитата:

Сообщение от tsigel
Ваш тест алгоритмически не верен. Фильт проходит весь массив а фор - часть.

пробовал и for крутить до конца - все равно for получается быстрее в популярных современных браузерах


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