
Gwern Branwen [2012.02.12 1818 -0500]:
On Sun, Feb 12, 2012 at 4:54 PM, Norbert Zeh
wrote: The reason why I'm writing about this *before* putting the effort into testing all my changes is that I'd like to know how the community feels about a change in the interface of the DecorationStyle type class. As it is, there are only two choices: accept this change or continue to live with quadratic-time behaviour of all or at least most decoration modules because the latter is unavoidable with the current interface. This change in interface should only affect other modules in XMonadContrib, and I've converted them to the new interface already. User configurations should not be affected even for the majority of people who use window decorations because they will normally simply use the layout modifiers based on the decoration module - they will not directly use the DecorationStyle class.
/puts on XMC commit hat
The performance issue is a serious one, which has caused emails for years now, and has no doubt irritated many users. I'd rank it as one of the most serious issues with stock XMC and something that should. If the performance really is fixed by a breaking API change, then I'm cool with it as long as the 8 or 9 modules using DecorationStyle are also fixed - breaking the compile or runtime is pretty non-negotiable.
Of course! So I'll coninue working on this. I just finished a test with NoFrillsDeco based on the new Decoration module. It's faster but not fast. I'll have to put this on the backburner for a few days...conference deadline. After that I'll have to think a little harder how to see how to cut down on CPU cycles even more. As an indication of what "faster" means: Before, 30 windows per workspace led to delays of several seconds in layout updates on my machine. Now I have this down to probably about half a second. With 15-30 windows on a workspace, things feel quite a bit snappier but still sluggish compared to not having decorations at all. It gets really fast only once you're down to about 6-10 windows, at which point the old module is also reasonably usable. Cheers, Norbert