Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 08.02.2010, 20:39
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

по коду - не стоит делать гигантских двумерных функций
__________________
.ня
Ответить с цитированием
  #12 (permalink)  
Старый 08.02.2010, 20:40
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Сообщение от tenshi
если твой движок селекторов так крут - ну так и развивай jquery встроив движок в него
я не говорю что он крут. Я просто говорю недостатки каждого. В моем тоже есть недостатки пока что, потому еще не показал конечный результат. Уже 3ю неделю ломаю голову как убрать недостатки jQ и что бы код был по меньше и скорость не меньше jQ
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
Ответить с цитированием
  #13 (permalink)  
Старый 08.02.2010, 21:21
Аватар для Cr@ZyBoY
Аспирант
Отправить личное сообщение для Cr@ZyBoY Посмотреть профиль Найти все сообщения от Cr@ZyBoY
 
Регистрация: 08.02.2010
Сообщений: 52

PeaceCoder,
а вы добавляли элементы в DOM вручную или использовав функции из Карбона? Просто на этот счёт во всех функциях из DOM-модуля есть функция автоматического обновления кэша, соответственно таких проблем возникнуть не должно.
Над комбинаторами подумаю, возможно будет проще сделать посимвольный разбор строки в данном случае, как я делал в getByPseudo(). Спасибо за замечания

tenshi,
как я уже написал на своём сайте, я не собираюсь делать очередной jQuery, и тем более модернизировать его. Почему? Не люблю ковыряться в чужом навороченном коде. Я как-то пытался понять, а как же оно там всё устроено... И решил, что проще написать свою библиотеку.
Ответить с цитированием
  #14 (permalink)  
Старый 08.02.2010, 22:07
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Сообщение от Cr@ZyBoY
Просто на этот счёт во всех функциях из DOM-модуля есть функция автоматического обновления кэша, соответственно таких проблем возникнуть не должно.
Другими словами DOM привязан к вашему ФВ. А это плохо и если сторонний срипт(какойто модуль другого человека или еще что) изменит вручную дом контент, то эффект от Ваших селекторов 0. А если например innerHTML=....
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
Ответить с цитированием
  #15 (permalink)  
Старый 08.02.2010, 22:36
Аватар для Cr@ZyBoY
Аспирант
Отправить личное сообщение для Cr@ZyBoY Посмотреть профиль Найти все сообщения от Cr@ZyBoY
 
Регистрация: 08.02.2010
Сообщений: 52

Ну, можно ещё пошаманить с MutationEvents.
Ответить с цитированием
  #16 (permalink)  
Старый 08.02.2010, 23:31
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Сообщение от Cr@ZyBoY
MutationEvents.
Они поддерживаются, ито плохо, вроде только в MZ и Safari
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
Ответить с цитированием
  #17 (permalink)  
Старый 08.02.2010, 23:43
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

Цитата:
как я уже написал на своём сайте, я не собираюсь делать очередной jQuery, и тем более модернизировать его. Почему? Не люблю ковыряться в чужом навороченном коде. Я как-то пытался понять, а как же оно там всё устроено... И решил, что проще написать свою библиотеку.
напиши свою либу с тем же апи и засунь вместо sizzle
__________________
.ня
Ответить с цитированием
  #18 (permalink)  
Старый 09.02.2010, 01:51
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Cr@ZyBoY,
Кстати спасибо за идею разделения getByCombinators. Если я на верном пути, а это кажется так, то вроде допер как быстро выбрать нужные элементы не затрачивая практически времени. ща буду соединять логику jQ и твою...
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
Ответить с цитированием
  #19 (permalink)  
Старый 09.02.2010, 08:31
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Array.prototype.inArray = function(value) {
	var i = 0, ii;
	while (ii = this[i++]) {
		if (ii === value) return true;
	}
	return false;
};


перезапись переменной (ii = thi) довольно медленная операция (относительно) и в данном случае происходит при каждой итерации цикла, можно легко избавиться от нее.

Вторая перезапись (i++) срабатывает лишний раз в последней итерации цикла.

Вообще все циклы очень не оптимизировано написаны.




CarbonJS.onDOMready = function(func) {
	var init = function() {
		if (arguments.callee.done) return;
....


ужасно написано:
- отдельный Interval для каждого вызова, можно обойтись одним.
- целевая функция должна вызываться в контексте document так как является обработчиком события DOMContentLoaded (в идеале) которое принадлежит документу.
- способ для отслеживания readyState в WebKit давно не имеет смысла, версиями браузеров для которых он придуман уже давно вообще никто не пользуется.
- вызов CarbonJS.onDOMready после onload уходит в пустоту, может это и правильно, но обычно это не так, кроме того при этом останутся Interval-ы которые уже никогда не будут сброшены.
- перезапись window.onload.
- вместо defer лучше использовать doScroll.

Мой старый вариант с defer:
DOMContentLoaded и defer
Octane там объяснил чем doScroll лучше.




window.onunload = function() { // Чтобы избежать утечек памяти во всеми любимом браузере, удаляем вручную все установленные обработчики событий
	while (CarbonJS.events.length > 0) Q(CarbonJS.events[0].obj).removeEvent(CarbonJS.events[0].evt);
};


если я через addEvent назначу событие onunload, то unload удаляющий все события вероятно сработает раньше моего (мой unload удалится и не сработает), window.onunload тоже занят, и как мне теперь свой unload поставить?




cl = cl.split(" "); // Чтобы удалить класс, сначала разбиваем className на массив значений


разделителем имен может быть любой пробельный символ, а не только пробел.




while (++i < cl.length) ncl += cl[i]; // и перезаписываем className


Array#join


//----------------

Вывод: при максимально беглом осмотре двух модулей множество стандартных ошибок, что будет если я детально стану разбирать? Сильно не оптимизированный код, особенно циклы, множество спорных решений.

Последний раз редактировалось Riim, 09.02.2010 в 09:51.
Ответить с цитированием
  #20 (permalink)  
Старый 09.02.2010, 12:22
Аватар для Cr@ZyBoY
Аспирант
Отправить личное сообщение для Cr@ZyBoY Посмотреть профиль Найти все сообщения от Cr@ZyBoY
 
Регистрация: 08.02.2010
Сообщений: 52

PeaceCoder,
да не за что. Кстати, интересно поглядеть на ваш движок. Kolyaj говорил, что он где-то в соседней теме, но я что-то не нашёл...

Riim,
на мой выбор такого типа циклов повлияла вот эта статья - http://habrahabr.ru/blogs/yass/49679/ ("Перебор массива"). Если вы знаете более быстрый способ - пожалуйста, я его рассмотрю и протестирую.
Про onDOMready: это отголоски моей первой библиотеки 2-летней давности, код я пересмотрю. Большую часть функций из модуля utilities я тоже буду переписывать, просто ещё руки не дошли.
Насчёт циклов я своё мнение уже сказал. Если вас не затруднит, посмотрите подробнее другие модули.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с javascript andruhin Общие вопросы Javascript 12 04.05.2012 10:05
JavaScript на Яндекс.Фотки - почему тормозит браузеры? ZavFirefox Javascript под браузер 23 27.09.2009 19:24
js-core JavaScript framework Octane Ваши сайты и скрипты 32 25.06.2009 10:17
Программист на JavaScript (удалённо) Vadym Работа 1 28.01.2009 13:57
Нужен Старший разработчик JavaScript Yandex Работа 17 19.08.2008 16:43