Hi Martin,

sorry for kicking in here:

I'm observing the same in my application during the initialization of a 
relative simple table (smart table model) with 8 rows and under 50 lines 
placed in a window with 9 buttons.

While there is no problem in modern Browsers (IE9, Chrome 24, Firefox 
18, Opera 12, Safari 5) where the window is displayed nearly  instantly 
I'm having big problems in IE8.

The profiler shows 3400 calls to qx.event.Manager.removeListener which 
takes approx. 8 seconds in IE8.

My question is: what is causing this tremendous amount of calls to 
removeListener during initialization of the window/widget?

I've done a profile under Chrome 24 which indicates that a lot of calls 
where caused by LayoutItems.destruct (removal of the "changeTheme" event 
listener)

   destruct : function()
   {
     // remove dynamic theme listener
     qx.theme.manager.Appearance.getInstance().removeListener(
       "changeTheme", this._onChangeTheme, this
     );

  and qx.ui.basic.Label.destruct where I found the removal oft the 
"changeLocale" event listener.

   destruct : function()
   {
     if (qx.core.Environment.get("qx.dynlocale")) {
qx.locale.Manager.getInstance().removeListener("changeLocale", 
this._onChangeLocale, this);
     }

I've disabled the dynamic local change feature (environment qx.dynlocale 
set to false in config.json) and commented out adding/removal of the 
"changeTheme" event listener in LayoutItems which dropped initialization 
of the window mentioned above from ~12 seconds to 2-3 seconds.

It seems that onn legacy browsers removeListener becomes very time 
consuming especially for events added to singletons which have a lot of 
added listeners (qx.theme.manager.Appearance and qx.locale.Manager).

I think two things may help running larger apps on IE legacy browsers:

1. Implement a hash based removeListener (as suggested by Thomas).

2. Support a similar environment setting in order to disable dynamic 
theme change (eg. qx.dynthemechange).

3. Investigate why there are obviously so many 
instatiations/destructions in this situation.

Best regards
Dietrich



Am 12.11.2012 13:12, schrieb Martin Wittemann:
> Hey,
>
>> in my qx.event.Manager.js#654
>>
>> the entryList is sequentially looped:
>>
>>   for (var i=0, l=entryList.length; i<l; i++)
>>   {
>>     entry = entryList[i];
>>     if (entry.handler === listener && entry.context === self)
>>     ...
>>
>> Now the debugger tells me that in my case
>>
>>    entryList.length == 53033 (!!!many items!!!)
>>
>> so everything gets very slow.
>>
>> 1) Does this show some problem in my code or are all qooxdoo events inside 
>> entryList
>>   and the huge number is normal?
> Well, it depends on the application size. If its a huge application, a number 
> of 53k listeners is possible, especially when using data binding. So thats 
> nothing I would worry about.
>
>> 2) Shouldn't the access to entryList be via a hashtable?
> And what would the key be? Listener and context could be two complex 
> widgets...
>
> Did you profile how much this is impacting the overall performance? If its 
> enough, we might consider a bug report for that.
>
> Regards,
> Martin
> ------------------------------------------------------------------------------
> Everyone hates slow websites. So do we.
> Make your web apps faster with AppDynamics
> Download AppDynamics Lite for free today:
> http://p.sf.net/sfu/appdyn_d2d_nov
> _______________________________________________
> qooxdoo-devel mailing list
> qooxdoo-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel


------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. SALE $99.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122412
_______________________________________________
qooxdoo-devel mailing list
qooxdoo-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to