----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://git.reviewboard.kde.org/r/129859/ -----------------------------------------------------------
(Updated Jan. 23, 2017, 7:03 p.m.) Status ------ This change has been marked as submitted. Review request for KDE Frameworks, David Faure, Daniel Vrátil, and Laurent Montel. Repository: kcoreaddons Description ------- On my machine, the initial output is as follows for RelWithDebInfo: PASS : KTextToHTMLTest::benchHtmlConvert(plain) RESULT : KTextToHTMLTest::benchHtmlConvert():"plain": 4.0 msecs per iteration (total: 65, iterations: 16) PASS : KTextToHTMLTest::benchHtmlConvert(preserve-spaces) RESULT : KTextToHTMLTest::benchHtmlConvert():"preserve-spaces": 3.4 msecs per iteration (total: 55, iterations: 16) PASS : KTextToHTMLTest::benchHtmlConvert(highlight-text) RESULT : KTextToHTMLTest::benchHtmlConvert():"highlight-text": 4.2 msecs per iteration (total: 68, iterations: 16) PASS : KTextToHTMLTest::benchHtmlConvert(replace-smileys) RESULT : KTextToHTMLTest::benchHtmlConvert():"replace-smileys": 4.1 msecs per iteration (total: 66, iterations: 16) PASS : KTextToHTMLTest::benchHtmlConvert(preserve-spaces+highlight-text) RESULT : KTextToHTMLTest::benchHtmlConvert():"preserve-spaces+highlight-text": 3.6 msecs per iteration (total: 58, iterations: 16) PASS : KTextToHTMLTest::benchHtmlConvert(preserve-spaces+highlight-text+replace-smileys) RESULT : KTextToHTMLTest::benchHtmlConvert():"preserve-spaces+highlight-text+replace-smileys": 3.5 msecs per iteration (total: 57, iterations: 16) Replace heap-allocated list of chars with QStringLiteral The main bottleneck in the benchmark for KTextToHTML was actually constructing the temporary list of word-boundaries. Instead of doing that all the time, use a QStringLiteral-constructed static QString. This improves the benchmarks by more than ~4x on my machine, all compiled in RelWithDebInfo: PASS : KTextToHTMLTest::benchHtmlConvert(plain) RESULT : KTextToHTMLTest::benchHtmlConvert():"plain": 0.75 msecs per iteration (total: 96, iterations: 128) PASS : KTextToHTMLTest::benchHtmlConvert(preserve-spaces) RESULT : KTextToHTMLTest::benchHtmlConvert():"preserve-spaces": 0.71 msecs per iteration (total: 91, iterations: 128) PASS : KTextToHTMLTest::benchHtmlConvert(highlight-text) RESULT : KTextToHTMLTest::benchHtmlConvert():"highlight-text": 0.89 msecs per iteration (total: 57, iterations: 64) PASS : KTextToHTMLTest::benchHtmlConvert(replace-smileys) RESULT : KTextToHTMLTest::benchHtmlConvert():"replace-smileys": 0.75 msecs per iteration (total: 96, iterations: 128) PASS : KTextToHTMLTest::benchHtmlConvert(preserve-spaces+highlight-text) RESULT : KTextToHTMLTest::benchHtmlConvert():"preserve-spaces+highlight-text": 0.79 msecs per iteration (total: 51, iterations: 64) PASS : KTextToHTMLTest::benchHtmlConvert(preserve-spaces+highlight-text+replace-smileys) RESULT : KTextToHTMLTest::benchHtmlConvert():"preserve-spaces+highlight-text+replace-smileys": 0.79 msecs per iteration (total: 51, iterations: 64) Remove temporary string allocations Instead of calling .mid() to compare to a QLatin1String, call .midRef() as that won't allocate. Improves the performance of the unit test by ~2x on my machine when compiling in RelWithDebInfo: PASS : KTextToHTMLTest::benchHtmlConvert(plain) RESULT : KTextToHTMLTest::benchHtmlConvert():"plain": 0.40 msecs per iteration (total: 52, iterations: 128) PASS : KTextToHTMLTest::benchHtmlConvert(preserve-spaces) RESULT : KTextToHTMLTest::benchHtmlConvert():"preserve-spaces": 0.36 msecs per iteration (total: 93, iterations: 256) PASS : KTextToHTMLTest::benchHtmlConvert(highlight-text) RESULT : KTextToHTMLTest::benchHtmlConvert():"highlight-text": 0.51 msecs per iteration (total: 66, iterations: 128) PASS : KTextToHTMLTest::benchHtmlConvert(replace-smileys) RESULT : KTextToHTMLTest::benchHtmlConvert():"replace-smileys": 0.41 msecs per iteration (total: 53, iterations: 128) PASS : KTextToHTMLTest::benchHtmlConvert(preserve-spaces+highlight-text) RESULT : KTextToHTMLTest::benchHtmlConvert():"preserve-spaces+highlight-text": 0.44 msecs per iteration (total: 57, iterations: 128) PASS : KTextToHTMLTest::benchHtmlConvert(preserve-spaces+highlight-text+replace-smileys) RESULT : KTextToHTMLTest::benchHtmlConvert():"preserve-spaces+highlight-text+replace-smileys": 0.46 msecs per iteration (total: 59, iterations: 128) Mark some methods as const Diffs ----- autotests/ktexttohtmltest.h 3aaa5810d84ecb05b68b8a20b94bd281cfe3a6ba autotests/ktexttohtmltest.cpp fa8bbf261acd7b77ac502f14ca7820d3aeed7b55 src/lib/text/ktexttohtml.cpp 9b15cb27c7b9998971e2efbc198c3f840bf34959 src/lib/text/ktexttohtml_p.h 5e343485b26eb03ce2805f3a9f178a395f9b46a3 Diff: https://git.reviewboard.kde.org/r/129859/diff/ Testing ------- the test still passes fine. note that the above is actually split into 4 commits locally Thanks, Milian Wolff