Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   консультационный вопрос о скорости (https://javascript.ru/forum/misc/28460-konsultacionnyjj-vopros-o-skorosti.html)

czp 20.05.2012 20:23

консультационный вопрос о скорости
 
скажите, сильно будет тормозить если вот такую функцию юзать
function myfunc(elem) {
  with (elem) {
	with (getElementsByTagName('div')[0]) {
	  style.width = '100px';
	  style.height = '100px';
	  style.margin = '0px';
	}
    getElementsByTagName('div')[1].style.display = 'none';
    style.margin = '0px 15px 15px 15px';
    style.width = '100px';
    style.height = '100px';
    style.cssFloat = 'left';
  }
}

при учете что входящих elem будет штук 35 - 45?

beard 20.05.2012 20:38

А что в ней должно тормозить? вы что-то делаете особое?

vasa_c 20.05.2012 20:40

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

beard 20.05.2012 20:48

Да вообще лучше не юзать with, везде о нем пишут столько гадостей, а в strict mode вообще кидает исключение SyntaxError. Наверно хотят его изжить из яваскрипт.

czp 20.05.2012 20:54

Цитата:

with будет тормозить, локальный контекст будет неоптимизированным.
так что лучше без with написать?

vadim5june 20.05.2012 21:03

По моему время построения DOM когда будут выполнятся строчки типа
style.width = '100px';
и займут львиную долю времени вывода этих 40 элементов
так что с with или без него -все равно-быстродействие не этим в данном случае определяется
но 45 элементов это немного несколько десятков милисекунд-максимум

czp 20.05.2012 21:09

а что посоветуете, для подьема скорости?

vadim5june 20.05.2012 21:14

Цитата:

Сообщение от czp (Сообщение 175657)
а что посоветуете, для подьема скорости?

я думаю вам и не понадобиться ее поднимать-или есть проблемы?
Когда то делал так перед присваиванием dysplay='none'-а в конце возвращал прежнее значение и быстродействие увеличивалось
но сейчас браузеры заметно быстрее стали работать и проблем нет хотя иногда и пару сотен элементов вывожу

czp 20.05.2012 21:30

Цитата:

я думаю вам и не понадобиться ее поднимать-или есть проблемы?
пока еше нет, так как 10 элемов, пока быстро робит, если так же при 35 - 45 будет - то проблем нет

B@rmaley.e><e 20.05.2012 21:40

Цитата:

Сообщение от czp
А что в ней должно тормозить? вы что-то делаете особое?

Да почти всё.

1. Постоянные redraw / reflow.
2. Выбираются все дивы, хотя нужны только 2.
3. with

Но всё зависит от того, насколько часто функция вызывается.


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