<html>
<body>
<div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
<table bgcolor="#f9f3c9" width="100%" cellpadding="12" style="border: 1px #c9c399 solid; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
<tr>
<td>
This is an automatically generated e-mail. To reply, visit:
<a href="https://git.reviewboard.kde.org/r/123852/">https://git.reviewboard.kde.org/r/123852/</a>
</td>
</tr>
</table>
<br />
<table bgcolor="#e0e0e0" width="100%" cellpadding="12" style="border: 1px gray solid; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
<tr>
<td>
<h1 style="margin: 0; padding: 0; font-size: 10pt;">This change has been marked as submitted.</h1>
</td>
</tr>
</table>
<br />
<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="12" style="border: 1px #888a85 solid; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
<tr>
<td>
<div>Review request for KDE Frameworks, Laurent Montel, Martin Tobias Holmedahl Sandsmark, and Kåre Särs.</div>
<div>By Milian Wolff.</div>
<p style="color: grey;"><i>Updated May 25, 2015, 1:59 p.m.</i></p>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Changes</h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
<tr>
<td>
<pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Submitted with commit 1334cdcbce2f355455faf0bf9693881462c20416 by Milian Wolff to branch master.</pre>
</td>
</tr>
</table>
<div style="margin-top: 1.5em;">
<b style="color: #575012; font-size: 10pt;">Repository: </b>
sonnet
</div>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
<tr>
<td>
<pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">This removes a serious performance penalty from enabling on-the-fly spell
checking in KTextEditor. For some reason, the copy assignment of a Speller
object invalidated the internal cache which happened very often from the Kate
code base. Now, the cache is kept valid and reused, and the performance is good
again. I'm not sure whether this has any unintentional side-effects, but the
tests work fine and spell checking in KatePart still looks good as well,
and is now fast again.
E.g. previously I easily ended up with heaptrack reports such as this one:
2284529 calls to allocation functions with 16.23MB peak consumption from
HashMgr::add_word(char const*, int, int, unsigned short*, int, char const*, bool)
in /usr/lib/libhunspell-1.3.so.0
1978045 calls with 2.30MB peak consumption from:
HashMgr::load_tables(char const*, char const*)
in /usr/lib/libhunspell-1.3.so.0
HashMgr::HashMgr(char const*, char const*, char const*)
in /usr/lib/libhunspell-1.3.so.0
Hunspell::Hunspell(char const*, char const*, char const*)
in /usr/lib/libhunspell-1.3.so.0
HunspellDict
at .../sonnet/src/plugins/hunspell/hunspelldict.cpp:36
in /home/milian/projects/compiled/kf5/lib64/plugins/kf5/sonnet/hunspell.so
HunspellClient::createSpeller(QString const&)
at .../sonnet/src/plugins/hunspell/hunspellclient.cpp:43
in /home/milian/projects/compiled/kf5/lib64/plugins/kf5/sonnet/hunspell.so
Sonnet::Loader::createSpeller(QString const&, QString const&) const
at .../sonnet/src/core/loader.cpp:103
in /home/milian/projects/compiled/kf5/lib64/libKF5SonnetCore.so.5
Sonnet::Speller::Private::updateDict()
at .../sonnet/src/core/speller.cpp:64
in /home/milian/projects/compiled/kf5/lib64/libKF5SonnetCore.so.5
Sonnet::Speller::Private::recreateDict()
at .../sonnet/src/core/speller.cpp:79
in /home/milian/projects/compiled/kf5/lib64/libKF5SonnetCore.so.5
Sonnet::Speller::operator=(Sonnet::Speller const&)
at .../sonnet/src/core/speller.cpp:111
in /home/milian/projects/compiled/kf5/lib64/libKF5SonnetCore.so.5
Sonnet::BackgroundChecker::setSpeller(Sonnet::Speller const&)
at .../sonnet/src/core/backgroundchecker.cpp:131
in /home/milian/projects/compiled/kf5/lib64/libKF5SonnetCore.so.5
KateOnTheFlyChecker::performSpellCheck()
at .../ktexteditor/src/spellcheck/ontheflycheck.cpp:405
in /home/milian/projects/compiled/kf5/lib64/libKF5TextEditor.so.5</pre>
</td>
</tr>
</table>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">
<li>src/core/speller.cpp <span style="color: grey">(3903b42ebb4f7cb98a049fcf7a291c74dd9457e0)</span></li>
</ul>
<p><a href="https://git.reviewboard.kde.org/r/123852/diff/" style="margin-left: 3em;">View Diff</a></p>
</td>
</tr>
</table>
</div>
</body>
</html>