user avatar
QTranslator: re-use 'realname' capacity in find_translation()
Marc Mutz authored
For almost the whole of its life time, 'realname' has the same
prefix, but the old code used the same string-builder expression
to construct it over and over again. If QStringBuilder would
re-use the capacity of the LHS object, that would boil down to
just a bit more copying of characters than necessary. But
assigning a QStringBuilder expression to a QString works by
implicit conversion of the QStringBuilder expression to a
QString, followed by move-assigning the new QString into the
old.

The new code keeps the common prefix around, resetting
'realname' to that prefix with truncate, only appending the
varying suffixes. In this way, one memory allocation per
assignment is saved (ignoring a potentially required capacity
increase in one of the appends here), and also some out-of-line
QString dtor calls, since op+=(QString&, QStringBuilder...)
doesn't create a temporary QString.

Also saves ~1KiB in text size on optimized GCC 4.9 Linux AMD64
builds.

Change-Id: I0872a69c9111d7218567f06f8fefb010f2430532
Reviewed-by: default avatarLars Knoll <lars.knoll@theqtcompany.com>
Reviewed-by: default avatarThiago Macieira <thiago.macieira@intel.com>
c3118155