I really enjoy profiling and optimization, mainly for those WTF moments when results pop out the other end. Systems rarely behave the way anyone expects, and I doubt anyone would have expected this:
Wierd D-Bus performance
The graph is showing time taken to pass many many messages of different size fixed arrays over D-Bus and ORBit. At about 120k message size, Libdbus hits a performance brick wall. Its really hard for me to imagine whats going on here, but as soon as I have the time I’ll go back and do my best to find out.
As part of work we (Codethink) are doing for the Mozilla foundation I have been looking, at the performance of D-Bus vs ORBit. Its a well traveled road with Ross Burton, Havoc Pennington and Frank Dunigan all having posted results before. As far as AT-SPI is concerned though its Frank’s results that are quoted on the Open A11y wiki. “An alpha version of the D-Bus bindings for glib has been tested to be 18x slower than ORBit2″. Well this is no longer true, the tests were repeated and the results show a big improvement over time. D-Bus is now roughly 6 times slower. Its a wonder these haven’t been repeated before over the years. I guess the main thing is performance of the IPC for most apps just isn’t important. It might be for AT-SPI though, from the initial tests done on Orca, its a pretty heavy user.
All of the results can be found at: