
Issue 179: Tabbed Layout doesn't scale as well as it could http://code.google.com/p/xmonad/issues/detail?id=179 Comment #7 by andrea.rossato: clem...@endorphin.org:
Thank you andrea. Your patch practically fixed the problem for me. There still seems to be an issue that makes this non-linear, but at least xmonad recovers now from the shocking event that firefox-session-resume throws 50 windows at it at once (it takes about 5-6 seconds to get back to normal even on my old box).
I don't know if you had the opportunity to do some testing yourself (maybe you can even suggest some better ways of debugging the problem), but the test method I suggested in the non-constructive-and-thus-deleted comment makes me feel you might be not entirely right when you seem to suggest it is tabbed/decoration being non liner. Attached you'll find the result of opening ~150 terminals. Time is taken after the Simplest layout returned, after Tabbed returned, and at the end of Operations.windows. Just a sample: 1. first terminal Simplest - 43.823897000000 tabbed - 43.832515000000 Operations - 43.845520000000 Simplest - 45.432586000000 ... 2. ~80 terminals Simplest - 15.544721000000 tabbed - 15.722086000000 Operations - 16.799534000000 Simplest - 16.801581000000 ... 3. the last terminals (at about ~150): Simplest - 13.104917000000 tabbed - 13.476366000000 Operations - 15.990074000000 Simplest - 15.992864000000 tabbed - 16.394499000000 Operations - 19.342026000000 Simplest - 26.586562000000 tabbed - 26.968268000000 Operations - 29.499717000000 It seems quite clear, to me, that (tabbed - Simplest) is growing slower than (Operations - tabbed), which makes me think it may be the moveResizeWindow and the restackWindows calls that behave non-linearly. Now, if there is a substantial difference between 0.6 tabbed and 0.7 tabbed it is the fact that the decoration windows are now returned, by the decoration modifier, in the (window,rectangle) list. Even though at that time my mails were marked as spam, I tried to discuss with other developers about this design decision. Still I believe it is a necessary one: if you remember, the old tabbed had issues in interacting with the floating layer. Moreover it was not generalizable and its decoration system could not be used to support a decorated floating layout - which needs restackWindows to be called with *all* visible windows. I only discussed this problem with the original Tabbed author, David Roundy, and he agreed with me. Anyway, the fact is that there is not evidence, so far, that tabbed and the decoration framework it is based upon is O(n^2) by design, as Braden stated, using Spencer's authority to support his claim. What I mean, is that there seems to be room for a deeper analysis. I tried in the past (around 0.3) to do some profiling, but I wasn't able to get useful information, especially when xlib calls seem to be a major issue. Still auditing the code - or at least reading it - should be done without prejudice, keeping in mind that a layout like tabbed has far reaching effects and may display bugs quite difficult to relate to. Instead, this issue was described as not even worth debugging ("these changes are in the "rewrite" category, not the "tweak" one"). I wonder if this replay is unrelated to the fact that the author of such an ugliness, obviously due to ignorance and/or lack of experience - what else? -, is ...me. And I wonder if removing the comment where the author of the code provided some evidence that maybe the answer could be indeed a bit more complicated, or simpler, than his own incapacity, is really unrelated to flamebait and emotional judgements... Which brings me to Spencer: Removing my comments and my patches, invalidating the issues I report it is not damaging me. You have the password and you are the ruler. You decide when ironically picturing the way you reached the conclusion that Decoration was rotten by design is editorializing or not. Still, by repeatedly and emotionally deleting everything related to me you are hurting your users and the trustworthy of your project. Do you want some evidence? 1. in a, say, tabbed layout open a few windows; 2. run: xterm -name "" oops, what happened? Take it easy (you really should: it's just a WM). Attachments: issue179_data.txt 13.6 KB -- You received this message because you are listed in the owner or CC fields of this issue, or because you starred this issue. You may adjust your issue notification preferences at: http://code.google.com/hosting/settings