Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Тут собираем годные задачи (javascript) (https://javascript.ru/forum/offtopic/32201-tut-sobiraem-godnye-zadachi-javascript.html)

Maxmaxmахimus 12.10.2012 11:20

*наркоманы*

DjDiablo 12.10.2012 14:05

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

Пробую мерить расход памяти для 10 000 000 замыканий.
Cначало прогонем без цикла - 5 340 (не одного замыкания)
для alert (1) - 473 000 (здесь мы не тянем за собой scope)
для alert (data) - 717 000 (здесь мы тянем за собой scope)
для eval - БОЛТ :D, виснет, но для 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 ощутимо увеличивает расход памяти на замыкания, к тому имеет проблемы с большим количеством.

Nekromancer 12.10.2012 14:09

Цитата:

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

sn87 03.12.2015 01:31

Задача № 1


function continueSequence(arr){
  return function(){
    var arrLength = arr.length;
    var gen = arr[arrLength - 1] - arr[arrLength - 2]  + arr[arrLength - 1];
    arr.push(gen);
    return gen;
  }
}

Mаxmaxmаximus 03.12.2015 02:36

:lol: вы тоже проигрываете читая свои старые каменты на форуме?


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