Revision 0c993a7...

Go back to digest for 6th October 2013

Optimization in KDE-PIM

Jan Kundrát committed changes in [trojita] /:

Use pre-created instances when comparing flag names

The goal here was to elliminate in-place construction of QString instances only
to be destroyed later on when they go out of scope. This change cuts the time
spent in the isMarkedAsRead when running the testFlagReSyncBenchmark test from
2.69% of the total runtime down to 0.57% (clang 3.3). It might be interesting to
see how forcing the comparison to *always* hapen *only* on QString::d would end
up :), but it's rather tricky because that's a private member, of course. That
said, soemthing along the lines of [1] (inspired by [2] which is inspired by
[3]) *might* actually work here.

Tests which attempted to use std::binary_search ended up rather poorly; it seems
that clang 3.3 was not happy enough to inilne the various std::advance and
iterator_traits calls.

[1] https://gist.github.com/dabrahams/1528856
[2] http://bloglitb.blogspot.cz/2010/07/access-to-private-members-thats-easy.html
[3] http://stackoverflow.com/a/3173080/2245623

REVIEW: 113120

File Changes

Added 2 files
  • /Imap/Model
  •   src/SpecialFlagNames.cpp
  •   src/SpecialFlagNames.h
Modified 3 files
  •   CMakeLists.txt
  •   src/Imap/Model/MailboxTree.cpp
  •   src/Imap/Model/Model.cpp
5 files changed in total