Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #41 (permalink)  
Старый 07.02.2014, 19:20
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

да ну нафиг, это уже явное читерство

Цитата:
Перебор данных
Label ms
forEach 171
$C().forEach 54
each 119
как твоя реализация, обрабатывает масси быстрее обычного цикла?О_О
Да ну быть такого не может, ладно сделаю нормальные тесты когда будет время...
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #42 (permalink)  
Старый 07.02.2014, 19:23
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от cyber Посмотреть сообщение
да ну нафиг, это уже явное читерство


как твоя реализация, обрабатывает масси быстрее обычного цикла?О_О
Да ну быть такого не может, ладно сделаю нормальные тесты когда будет время...
Моя реализация это и есть цикл: т.е. генерится строка с циклом и подключается как script.

Вот пример такого цикла:
Collection._tmpCycle["1,false,false,true,el > 1,,,,,false,false,false,true,false,true,false,false,false,false"] = function anonymous(data, length, fLength, callback, aFilter, filter, id) {
    var i = -1,
        j = 0,
        el, key, aProto = [];
    var cloneObj, aLength, dLength = data.length - 1;
    cloneObj = data;
    aLength = cloneObj.length;
    for (i = -1; ++i < aLength;) {
        key = i;
        el = cloneObj[i];
        if (el > 1) {
            callback(el);
        }
    }
};


Можно заметить, что в callback передаётся всего один параметр, не передаётся this и не проверяется return false, т.к. в исходном callback этого ничего и нет, а фильтр вообще был проинлайнен (el > 1), отсюда и профит. Сам цикл также написан в читерной форме:

for (i = -1; ++i < aLength;) {
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 07.02.2014 в 19:30.
Ответить с цитированием
  #43 (permalink)  
Старый 07.02.2014, 19:32
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

kobezzza, я кажеться начал понимать как у тебя работает.
Ты создаешь функцию, с 2мя вариантами обработки массива и потом ее кешируешь, live я так понял это "живые" коллекции?
if (live) {
			iFn += 'for (i = -1; ++i < cloneObj.length;) {';

		} else {
			iFn +=
				'aLength = cloneObj.length;' +
				'for (i = -1; ++i < aLength;) {';
		}

но я всеравно не пойму почему этот вариант который используешь ты, быстрее чем
var leng = arr.length;
		        while(leng--) {
		        	callback(context, arr[leng], leng, arr);
		        }
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #44 (permalink)  
Старый 07.02.2014, 19:34
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от cyber Посмотреть сообщение
kobezzza, я кажеться начал понимать как у тебя работает.
Ты создаешь функцию, с 2мя вариантами обработки массива и потом ее кешируешь, live я так понял это "живые" коллекции?
if (live) {
			iFn += 'for (i = -1; ++i < cloneObj.length;) {';

		} else {
			iFn +=
				'aLength = cloneObj.length;' +
				'for (i = -1; ++i < aLength;) {';
		}
Блин, я же уже 100 раз говорил: да, у меня кодогенерация с кешированием, более того кеш сохраняется в localStorage
Только вариантов обработки может быть очень много и зависит это от входных параметров и типа данных.

live значит без кеширования начальной длины для массивов:
https://github.com/kobezzza/Collection#opt_live

Сообщение от cyber Посмотреть сообщение
но я всеравно не пойму почему этот вариант быстрее чем
var leng = arr.length;
		        while(leng--) {
		        	callback(context, arr[leng], leng, arr);
		        }
У тебя всегда передаются
context, arr[leng], leng, arr
, а у меня только когда надо.
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 07.02.2014 в 19:38.
Ответить с цитированием
  #45 (permalink)  
Старый 07.02.2014, 19:37
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от kobezzza
Блин, я же уже 100 раз говорил: да, у меня кодогенерация с кешированием, более того кеш сохраняется в localStorage
да понял я уже 100 раз это, но у тебя кэшируеться не результат выпонлнения, а сама функция, и всеравно цикл выполняеться при каждом вызове функции, и поэтому я не могу вкурить ...
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #46 (permalink)  
Старый 07.02.2014, 19:40
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от cyber Посмотреть сообщение
да понял я уже 100 раз это, но у тебя кэшируеться не результат выпонлнения, а сама функция, и всеравно цикл выполняеться при каждом вызове функции, и поэтому я не могу вкурить ...
Ну да, только этот цикл заоптимизирован оч круто. Тоже самое делает JIT VM - изучает код, оптимизирует, создаёт ключ оптимизации и применяет его для этого и похожих участков что даёт мега профит, тоже самое делается и у меня.
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 07.02.2014 в 19:43.
Ответить с цитированием
  #47 (permalink)  
Старый 07.02.2014, 19:42
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

тьфу блин, у меня ошибка в коде была, теперь все норм

Цитата:
Перебор данных
Label ms
forEach 167
$C().forEach 66
each 48
var leng = arr.length;
while(leng--) {
   callback(arr[leng], leng, arr);
}
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #48 (permalink)  
Старый 07.02.2014, 19:43
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от kobezzza
Ну да, только этот цикл заоптимизирован оч круто.
в чем заключаеться его отимизация?
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #49 (permalink)  
Старый 07.02.2014, 19:48
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от cyber Посмотреть сообщение
в чем заключаеться его отимизация?
ты не читаешь, что я пишу

Посмотри сколько параметров поддерживает у меня forEach
https://github.com/kobezzza/Collecti...%D 0%BE%D0%B2

В цикле будут только те проверки, которые нужны. В callback передаются только те параметры, которые в ней юзаются (чем больше параметров передаётся, тем ниже скорость). Фильтры могут инлайнится: т.е. тело функции подставляется в цикл, т.е. без вызова функции и т.д.
__________________
kobezzza
code monkey
Ответить с цитированием
  #50 (permalink)  
Старый 07.02.2014, 19:50
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от kobezzza
ты не читаешь, что я пишу
я просто не понял что ты имел ввиду, теперь понял.
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Закрытие и открытие дива по клику OLDBOY Общие вопросы Javascript 30 28.09.2016 19:41
как обновлять collection каждые 5 секунд sergey_magic Backbone.js 1 29.07.2013 14:31
Collection – фреймворк для управления данными kobezzza Ваши сайты и скрипты 155 10.05.2013 08:59
Удаление всех options в select Ceргей Элементы интерфейса 9 28.11.2012 08:36