Показать сообщение отдельно
  #102 (permalink)  
Старый 12.10.2012, 14:05
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Небольшой тест на хроме.
Логично предположить что замыкания будут отражаться на расходе памяти.

Пробую мерить расход памяти для 10 000 000 замыканий.
Cначало прогонем без цикла - 5 340 (не одного замыкания)
для alert (1) - 473 000 (здесь мы не тянем за собой scope)
для alert (data) - 717 000 (здесь мы тянем за собой scope)
для eval - БОЛТ , виснет, но для 1000 000 замыканий составляет 117 000, значит где то 1 170 000. для 10 000 000

Код теста
var arr=[];
test=function(){
	var data="893749237776876872346873264782364823647324823647326473647";
              data=data+"893749237776876872346873264782364823647324823647326473647";
              data=data+"893749237776876872346873264782364823647324823647326473647";
              data=data+"893749237776876872346873264782364823647324823647326473647";
              data=data+"893749237776876872346873264782364823647324823647326473647";
              data=data+"893749237776876872346873264782364823647324823647326473647";
              data=data+"893749237776876872346873264782364823647324823647326473647";

	return function(){
		eval(" alert"+"(data)");
		//alert(data);
		//alert(1);
	} 
}

for (var i=0;i<10000000;i++){
     arr.push(test());
}

выводы.

-Замыкание пояляется только если мы используем переменные внешний функции
-eval ощутимо увеличивает расход памяти на замыкания, к тому имеет проблемы с большим количеством.
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 12.10.2012 в 14:53.
Ответить с цитированием