Javascript.RU

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

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

drag: function (v) {
            if (M.k == 'd') {
                var a= aps;
                var x = M.X_pX + v.pageX;
                var step = 5;
                if ((x < step || parseInt(x / step) == parseFloat(x / step)) && x > -1 ){
                    E.css({ left: x });
                    if (a)
                        a.left.value = x;
                   }
                var y = M.Y_pY + v.pageY;
                var y_s = y / step;
                if ((y < step || parseInt(y_s) == parseFloat(y_s)) && y > -1){
                    E.css({ top: y });
                    if (a) 
                        a.top.value = y;
                    }
            }
            else{
            var w = Math.max(v.pageX - M.pX + M.W, 0);
            var h = Math.max(v.pageY - M.pY + M.H, 0); 
                E.css({ width: w, height: h});
                if (aps) {
                    aps.width.value = w;
                    aps.height.value = h;
                }
            }return false;
        }

aps - обьект с дом елементами
E - jquery - обьект
Событие вызывается очень часто, хотелось бы чтобы оно выполнялось еще быстрее и не заметнее...

Последний раз редактировалось ejik, 20.07.2011 в 18:32.
Ответить с цитированием
  #2 (permalink)  
Старый 20.07.2011, 18:54
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от ejik
Событие вызывается очень часто, хотелось бы чтобы оно выполнялось еще быстрее и не заметнее..
что значит не заметней?
Ответить с цитированием
  #3 (permalink)  
Старый 20.07.2011, 23:03
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

Чтоб быстрее - не исплльзовать jQ, а так лень разбираться.
__________________
29375, 35
Ответить с цитированием
  #4 (permalink)  
Старый 21.07.2011, 08:59
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

сжал минификатором и выложил? что за ужасные имена переменных?

я бы постыдился такой код выкладывать.
Ответить с цитированием
  #5 (permalink)  
Старый 21.07.2011, 12:39
Новичок на форуме
Отправить личное сообщение для ejik Посмотреть профиль Найти все сообщения от ejik
 
Регистрация: 17.11.2010
Сообщений: 7

Сообщение от monolithed Посмотреть сообщение
что значит не заметней?
Когда функция выполняется секунду - две, провисание гуи очень заметно...

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

Я думаю в этом месте можно быстрее:
if ((x < step || parseInt(x / step) == parseFloat(x / step)) && x > -1 )

Суть если кратно step, то проводить действие. Бредовое решение было)
Например так:
if ((x < step || x% step == 0) && x > -1

в 2 раза быстрее

и прочел, что Math.max() - не самое быстрое решение.

Видно моя постановка вопроса вас не заинтересовала. Спасибо за внимание
Ответить с цитированием
  #6 (permalink)  
Старый 21.07.2011, 17:23
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

if ((x < step || parseInt(x / step) == parseFloat(x / step)) && x > -1 ){
                    E.css({ left: x });
                    if (a)
                        a.left.value = x;
                   }


о, жара
..

и без единого комментария

..

math.max и правда verrryy sloow

а еще использование jquery тоже само по себе не ускоряет процесс - функция css 80% своего времени будет объект расфасовывать, что вы ей вскормили

лучше напрямую через стиль написать.

...
заинтересовала. просто код ужасен. не для людей, я бы сказал
Ответить с цитированием
  #7 (permalink)  
Старый 21.07.2011, 19:03
Новичок на форуме
Отправить личное сообщение для ejik Посмотреть профиль Найти все сообщения от ejik
 
Регистрация: 17.11.2010
Сообщений: 7

и вправду погорячился выкладывать такой на суд людской

за гнобление jQuery спасибо, избавлюсь.

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

Есть такой вопросик стоит ли подобная оптимизацию делать, закешировал одну арифметическую операцию
этот код:
if ((y < step || parseInt(a/b) == parseFloat(a/b)

в этот:
var y_s = a/ b;
if ((y < step || parseInt(y_s) == parseFloat(y_s)
Ответить с цитированием
  #8 (permalink)  
Старый 21.07.2011, 20:43
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Подобные оптимизации Вам ничего не дадут.
Самые дорогие операции - это работа с DOM'ом. Минимизируйте их количество и почитайте о redraw / reflow и их оптимизации.
Ответить с цитированием
  #9 (permalink)  
Старый 21.07.2011, 21:02
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

замени parseInt хаками.

сделай в глобальную переменную, потом delete её

не знаю, что за парадокс, но во всех новых браузерах, короче говоря, доступ к глобалке быстрее, чем к локалке

а вообще, залазь на jsperf.com и сравнивай, сколько душе угодно
Ответить с цитированием
  #10 (permalink)  
Старый 21.07.2011, 21:52
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Цитата:
доступ к глобалке быстрее, чем к локалке
Оо как так, ведь для доступа к глобалке нужно лезть во внешний [[scope]]. Мистика Оо
__________________
kobezzza
code monkey
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти элемент ниже скрипта Vladislav_V Javascript под браузер 8 12.01.2011 08:47
Оптимизация скрипта Беляш jQuery 3 11.07.2010 14:45
Круговорт скрипта.... Karl Общие вопросы Javascript 1 17.10.2009 15:37
Блок переключения меню на JS, два скрипта в одном файле Dizeloid Элементы интерфейса 0 30.07.2009 12:03
как прекратить выполнение скрипта ? kefi Общие вопросы Javascript 3 31.03.2009 19:05