Dietrich Streifert schrieb:
> Yes understood.
> 
> The following code seems to be a point where it looks like to be worth 
> to investigate for optimizations in the instance method dispose of 
> qx.core.Object:
> 
> 
>   // Finally cleanup properties
>   if (this._objectproperties)
>   {
>     var a = this._objectproperties.split(qx.constant.Core.COMMA);
>     var l = a.length;
>     for (var i=0; i<l; i++) {
>       delete this[qx.OO.values[a[i]]];
>     }
>     delete this._objectproperties;
>   }
> 
> So my understanding is that in _objectproperties a comma separated list 
> exist of the property names. i.e.:
> 
> "value, name"
> 
> qx.OO.values holds a "translation" array which converts from the 
> property name to the attribute name. In this case calling
> 
>     qx.OO.values["value"] results in "_valueValue".
> 
> and implies the existence of the property
> 
>     this._valueValue
> 
> So the loop traverses the _objectproperties and deletes them.
> 
> I disabled the code above and the disposition is fast! So it seems that 
> the disposer method spends a lot of time in this loop.

Just natural as qooxdoo holds quite much data in objects. Maybe we could 
cache the split return. Could you test it and leave only this in your code:

 >   // Finally cleanup properties
 >   if (this._objectproperties)
 >   {
 >     var a = this._objectproperties.split(qx.constant.Core.COMMA);
 >     var l = a.length;
 >     //for (var i=0; i<l; i++) {
 >     //  delete this[qx.OO.values[a[i]]];
 >     //}
 >     //delete this._objectproperties;
 >   }

Is this also that slow?

Sebastian

> 
> 
> 
> Sebastian Werner schrieb:
>> Dietrich Streifert schrieb:
>>   
>>> Is the "full" disposing needed for a page unload?
>>>
>>> Would it be enough to have a light version of the dispose code for the 
>>> page unload case?
>>>     
>>
>> I am sorry. But this is not possible. You must dispose this otherwise 
>> you will have memory leaks. The only possibility is to make the disposer 
>> itself faster.
>>
>> Sebastian
>>
>>   
>>>
>>> Sebastian Werner schrieb:
>>>     
>>>> Dietrich Streifert schrieb:
>>>>   
>>>>       
>>>>> Thank you Sebastian!
>>>>>
>>>>> Now I think I got the path:
>>>>>
>>>>> qx.core.Object has a class method called dispose and an instance method 
>>>>> called dispose.
>>>>>
>>>>> Every instance of qx.core.Object is stored in the class attribute 
>>>>> qx.Class._db  at instantiation time (by the constructor):
>>>>>
>>>>>     qx.core.Object._db.push(this);
>>>>>
>>>>> The onunload event of the document fires the disposition of all 
>>>>> qx.core.Objects in the _db array by calling qx.Class.dispose. The 
>>>>> codepart with does the dispose is:
>>>>>
>>>>>   for (var i=qx.core.Object._db.length-1; i>=0; i--)
>>>>>   {
>>>>>     vObject = qx.core.Object._db[i];
>>>>>
>>>>>     if (vObject != null)
>>>>>     {
>>>>>       // logger.debug("Disposing: " + vObject);
>>>>>       vObject.dispose();
>>>>>       qx.core.Object._db[i] = null;
>>>>>     }
>>>>>   }
>>>>>
>>>>> so the the dispose method of each instance of qx.core.Object (and its 
>>>>> subclasses) gets called.
>>>>>
>>>>> In the instance dispose method the object properties and the object 
>>>>> userdata instances get deleted.
>>>>> At the bottom of the dispose method there is a code part which I don't 
>>>>> understand:
>>>>>
>>>>>   // Delete Entry from Object DB
>>>>>   qx.core.Object._db[this._hashCode] = null;
>>>>>   delete qx.core.Object._db[this._hashCode];
>>>>>
>>>>> So first the object reference is nulled and then it is deleted?
>>>>>
>>>>>
>>>>>     
>>>>>         
>>>> Yes, and mhh, this is not needed. The first (nullify) should be enough.
>>>>
>>>> Sebastian
>>>>
>>>> -- snip --
>>>>
>>>>
>>>> -------------------------------------------------------------------------
>>>> Take Surveys. Earn Cash. Influence the Future of IT
>>>> Join SourceForge.net's Techsay panel and you'll get the chance to share 
>>>> your
>>>> opinions on IT & business topics through brief surveys -- and earn cash
>>>> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>>>> _______________________________________________
>>>> qooxdoo-devel mailing list
>>>> [email protected]
>>>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>>>>   
>>>>       
>>> -- 
>>> Mit freundlichen Grüßen
>>> Dietrich Streifert
>>> Visionet GmbH
>>>
>>>
>>> ------------------------------------------------------------------------
>>>
>>> -------------------------------------------------------------------------
>>> Take Surveys. Earn Cash. Influence the Future of IT
>>> Join SourceForge.net's Techsay panel and you'll get the chance to share your
>>> opinions on IT & business topics through brief surveys -- and earn cash
>>> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>>>
>>>
>>> ------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> qooxdoo-devel mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>>>     
>>
>>
>> -------------------------------------------------------------------------
>> Take Surveys. Earn Cash. Influence the Future of IT
>> Join SourceForge.net's Techsay panel and you'll get the chance to share your
>> opinions on IT & business topics through brief surveys -- and earn cash
>> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>> _______________________________________________
>> qooxdoo-devel mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>>   
> 
> -- 
> Mit freundlichen Grüßen
> Dietrich Streifert
> Visionet GmbH
> 
> 
> ------------------------------------------------------------------------
> 
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys -- and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> qooxdoo-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to