Dietrich Streifert schrieb:
> Its fast! So the split does the performance impact!

One moment. It should be slow, if the performance impact really is the 
split call.



> 
> 
> Sebastian Werner schrieb:
>> 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;
>>  >   }
>>   
> Its fast! So the split does the performance impact!
> 
>> 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
>>   
> 
> -- 
> 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