Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2012, 23:53   #1
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию JavaScript. Оптимизация объявления переменной

Конструкция var объявляет переменную. Объявлять одну и туже переменную можно многократно.

Вопрос: как многократное объявление переменной влияет на скорость? Какие есть подводные камни?

Пример:
- Однократное объявление:
Код:
var celljoin;
for (var cell=1; cell<=1000; cell++){
celljoin = 0;
}
- Многократное объявление:
Код:
for (var cell=1; cell<=1000; cell++){
var celljoin = 0;
}
Виталий Желтяков вне форума Ответить с цитированием
Старый 20.01.2012, 02:12   #2
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,537
По умолчанию

ИМХО, в первом случае простая перезапись объявленной переменной, во втором браузер будет лишний раз дергаться освобождая память с одноименной глобальной переменной и выделяя память новой. Хотя хз, какой там механизм, может какой то оптимизатор есть.
Как бы первый вариант нормальный, второй - не знаю в каком случае нужно писать такой код.

Тесты показали, что разницы в скорости выполнения почти нет.

вот можете сами проверить, запустить код, например в firebug
Код:
var start = new Date();

var celljoin;
for (var cell=1; cell<=1000000; cell++){
celljoin = 0;
}
 
var end = new Date();
alert('Скорость ' + (end.getTime()-start.getTime()) + ' мс');
//////////////////////////////////////////////////
var start = new Date();

for (var cell=1; cell<=1000000; cell++){
	var celljoin = 0;
}
 
var end = new Date();
alert('Скорость ' + (end.getTime()-start.getTime()) + ' мс');
В ИЕ почти такие же результаты
Gorychev вне форума Ответить с цитированием
Старый 20.01.2012, 09:18   #3
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Цитата:
Как бы первый вариант нормальный, второй - не знаю в каком случае нужно писать такой код.
Переписываю свой код 3-хлетней давности. Там с объявлением переменных беда, а кода 50 Кб.
Цитата:
alert('Скорость ' + (end.getTime()-start.getTime()) + ' мс');
Отдельное спасибо за эту фишку. Запишу.

Результаты:
- Многократное объявление переменных снижает скорость в IE и Chrome в 2 раза, в остальных основных браузерах различий практически нет.
Но скорость объявления переменных очень высокая - тормоза будут заметны только при миллионах итераций, поэтому на этот факт можно забить.

Тему можно закрывать.
Виталий Желтяков вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Численные методы : Оптимизация функций одной переменной Дырдин Общие вопросы C/C++ 1 04.04.2011 11:36
javascript изменить значение переменной (пр:было 1234 стало 12341234) marianna14 Помощь студентам 2 27.03.2011 12:24
Объявления KemanSR Visual C++ 11 29.01.2011 22:54
Объявления событий Aleksey1989 Помощь студентам 11 04.11.2010 11:14
Как прочитать значение переменной javascript в TWebBrowser? u961 Работа с сетью в Delphi 2 01.04.2009 23:22