![]() |
|
||||||||||
|
|||||
|
Banned
[+1 16.05.2006]
[++1 16.05.2006] [+ 1 21.05.06] [++ за хамство] [+1 21.05.2006] Регистрация: Dec 2003
Сообщений: 3,925
|
Цитата:
Так почему gc должен высвобождать ресурсы? |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Antares, ок. Но есть утверждение, что после delete создание нового onEnterFrame займёт времени больше, чем присваивание другого значения...
|
|
|||||
|
Регистрация: Nov 2004
Адрес: Санкт-Петербург
Сообщений: 751
|
null это значение??? null - это null. 0 - значение
__________________
Всё гениальное просто. |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
Цитата:
Присваивание другого значения: f = function () {
delete this.onEnterFrame;
};
for (i = 0; i < 2000; i++) {
this.createEmptyMovieClip ("mc" + i, i);
this["mc" + i].onEnterFrame = null;
}
t1 = getTimer ();
for (i = 0; i < 2000; i++) {
this["mc" + i].onEnterFrame = f;
}
t2 = getTimer ();
trace (t2 - t1);
создаем новый onEnterFrame: Получил: 153, 155, 154, 155, 153. |
|
|||||
|
Регистрация: Nov 2004
Адрес: Санкт-Петербург
Сообщений: 751
|
var allObjects:Array = new Array();
function CreateObject():Object
{
var obj:Object = new Object();
for(var i = 0; i < 100; i++)
{
obj["prop" + i] = new Object();
obj["prop" + i].str = i + ". this is string number " + i;
obj["prop" + i].numb = Math.round(Math.random() * 0xFFFFF);
}
obj.Clear = function():Void
{
for(var i = 0; i < 100; i++)
{
this["prop" + i].str = null;
this["prop" + i].numb = null;
}
}
return obj;
}
function AddObjects():Void
{
var i = 0, max = Math.round(Math.random() * 0xFF);
for(; i < max; i++)
{
allObjects.push(CreateObject());
}
}
var pos = 0;
function ClearProperties():Void
{
alert("Clear");
var max = pos + 0xFFFFF;
//var max = pos + 0xFFF;
for(; pos < max; pos++)
{
if(pos >= allObjects.length)
{
pos = 0;
max = 0;
}
allObjects[pos] = null;
//delete allObjects[pos];
}
}
function StopAll():Void
{
clearInterval(interAdd);
clearInterval(interClear);
clearInterval(interStop);
clearInterval(interUpdate);
}
function Update():Void
{
info.text = "Количество элементов: " + allObjects.length;
info.text += "\nПозиция: " + pos;
}
var interAdd = setInterval(AddObjects, 1000);
var interClear = setInterval(ClearProperties, 10000);
var interStop = setInterval(StopAll, 15 * 60000);
var interUpdate = setInterval(Update, 2000);
Потом раскоментируем меняем местами закомментированные строки. Особенно хорошо видно при больших значениях (> 10000). P.S. Текстовое поле info создаём ручками ![]()
__________________
Всё гениальное просто. Последний раз редактировалось Homo Sapiens; 15.05.2006 в 23:35. |
|
|||||
|
Регистрация: Nov 2004
Адрес: Санкт-Петербург
Сообщений: 751
|
Пример достаточно нагляден. delete работает на самом деле ощутимо быстрее чем присвоение null. Но присвоение null тоже работает...
__________________
Всё гениальное просто. |
|
|||||
|
Регистрация: Nov 2004
Адрес: Санкт-Петербург
Сообщений: 751
|
var allObjects:Array = new Array();
function CreateObject():Object
{
var obj:Object = new Object();
for(var i = 0; i < 100; i++)
{
obj["prop" + i] = new Object();
obj["prop" + i].str = i + ". this is string number " + i;
obj["prop" + i].numb = Math.round(Math.random() * 0xFFFFF);
}
obj.Clear = function():Void
{
for(var i = 0; i < 100; i++)
{
this["prop" + i].str = null;
this["prop" + i].numb = null;
}
}
return obj;
}
function AddObjects():Void
{
var i = 0, max = Math.round(Math.random() * 0xFF);
for(; i < max; i++)
{
allObjects.push(CreateObject());
}
}
var pos = 0;
function ClearProperties():Void
{
alert("Clear");
var max = pos + 0xFFFFF;
for(; pos < max; pos++)
{
if(pos >= allObjects.length)
{
pos = 0;
max = 0;
}
//allObjects[pos] = null;
delete allObjects[pos];
}
}
function StopAll():Void
{
clearInterval(interAdd);
clearInterval(interClear);
clearInterval(interStop);
clearInterval(interUpdate);
info.text += "\nКонец работы, заполнение массива";
var len = allObjects.length;
for(var i = 0; i < len; i++)
{
allObjects[i] = CreateObject();
}
}
function Update():Void
{
info.text = "Количество элементов: " + allObjects.length;
info.text += "\nПозиция: " + pos;
}
var interAdd = setInterval(AddObjects, 1000);
var interClear = setInterval(ClearProperties, 10000);
var interStop = setInterval(StopAll, 3 * 60000);
var interUpdate = setInterval(Update, 2000);
__________________
Всё гениальное просто. |
|
|||||
|
Регистрация: Jun 2005
Адрес: в Питере
Сообщений: 981
|
Цитата:
__________________
Делай всё быстро, но не торопись!.._/*o|o*\_. |
|
|||||
|
Регистрация: Nov 2004
Адрес: Санкт-Петербург
Сообщений: 751
|
var allObjects:Array = new Array();
var testObj:Object = new Object();
testObj.prop = 1;
var realVar:Number = 1;
function CreateObject():Object
{
var obj:Object = new Object();
for(var i = 0; i < 100; i++)
{
obj["prop" + i] = new Object();
obj["prop" + i].str = i + ". this is string number " + i;
obj["prop" + i].numb = Math.round(Math.random() * 0xFFFFF);
}
obj.Clear = function():Void
{
for(var i = 0; i < 100; i++)
{
this["prop" + i].str = null;
this["prop" + i].numb = null;
}
}
return obj;
}
function AddObjects():Void
{
var i = 0, max = Math.round(Math.random() * 0xFF);
for(; i < max; i++)
{
allObjects.push(CreateObject());
}
}
var pos = 0;
function ClearProperties():Void
{
alert("Clear");
var max = pos + 0xFFFFF;
for(; pos < max; pos++)
{
if(pos >= allObjects.length)
{
pos = 0;
max = 0;
}
//allObjects[pos] = null;
//delete allObjects[pos];
//allObjects[pos] = testObj;
allObjects[pos] = realVar;
}
}
function StopAll():Void
{
clearInterval(interAdd);
clearInterval(interClear);
clearInterval(interStop);
clearInterval(interUpdate);
info.text += "\nКонец работы, заполнение массива";
var len = allObjects.length;
for(var i = 0; i < len; i++)
{
allObjects[i] = CreateObject();
}
}
function Update():Void
{
info.text = "Количество элементов: " + allObjects.length;
info.text += "\nПозиция: " + pos;
}
var interAdd = setInterval(AddObjects, 1000);
var interClear = setInterval(ClearProperties, 10000);
var interStop = setInterval(StopAll, 3 * 60000);
var interUpdate = setInterval(Update, 2000);
__________________
Всё гениальное просто. |
|
|||||
|
Регистрация: Nov 2004
Адрес: Санкт-Петербург
Сообщений: 751
|
undefined во Flash сделано исключительно для удобства дизайнеров, чтобы им не напрягаться. Буквально это значит "не определена". В нормальных языках программирования, попытка использовать неопределённую переменную приводит к ошибке компиляции. И как правило, эти языки в принципе не дают объявить неинициализированную ссылочную переменную, требуя присвоить null, если пока нельзя определить конкретную цель для указателя.
__________________
Всё гениальное просто. |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:04. |
|
|
« Предыдущая тема | Следующая тема » |
|
|