[Development] optimizing QComposeInputContext / TableGenerator?
Olivier Goffart
olivier at woboq.com
Mon Jan 19 20:48:54 CET 2015
On Monday 19 January 2015 20:15:22 Milian Wolff wrote:
> Hello all,
>
> when I run my heaptrack [1] tool on Qt 5 applications, I often stumble upon
> the compose TableGenerator. It initializes many QStrings and also consumes
> ruoghly 400KB of memory. I wonder whether we could optimize this somehow?
>
> The best approach of course would be to have a OpenDesktop standard that
> allows mmapping the compose table in and using it from there. Probably not
> feasible. Creating our own cache brings the usual issues of having to update
> the cache when the original changes... So what I wonder about is whether
> one could delay the table generation? I usually don't use the compose key,
> so my naive assumption would be that lazy-loading this table would help the
> common case of startup quite a bit already. Or is this required for other
> things that I don't expect?
Looking at the hotspot from void TableGenerator::parseKeySequence:
elem.value = QString::fromLocal8Bit(composeValue).at(0).unicode();
So if I understand correctly, it needs to convert the full line to QString
just to take the first character. Surely this can be improved.
The code is here:
http://code.woboq.org/qt5/qtbase/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp.html#_ZN14TableGenerator16parseKeySequenceEPc
But yes, some mmapable on-disk cache would probably be the best.
One would just need to make sure that the cache is invalidated properly when
it should.
--
Olivier
Woboq - Qt services and support - http://woboq.com - http://code.woboq.org
More information about the Development
mailing list