ahmadsamir added a comment.
I hacked up some (rather crude, to say the least) benchmarking: void KLocalizedStringTest::benchmarkRegexSimple() { QString roleName, cueName, formatName; QString context = QStringLiteral("@info:tooltip/plaintext"); QBENCHMARK { if (context.startsWith(QLatin1Char('@'))) { // found UI marker static QRegularExpression wsRx(QStringLiteral("\\s")); context = context.mid(1, wsRx.match(context).capturedStart(0) - 1); // Possible format. int pfmt = context.indexOf(QLatin1Char('/')); if (pfmt >= 0) { formatName = context.mid(pfmt + 1); context.truncate(pfmt); } // Possible subcue. int pcue = context.indexOf(QLatin1Char(':')); if (pcue >= 0) { cueName = context.mid(pcue + 1); context.truncate(pcue); } // Role. roleName = context; } } } void KLocalizedStringTest::benchmarkRegex2() { QString roleName, cueName, formatName; QString context = QStringLiteral("@info:tooltip/plaintext"); QBENCHMARK { static const QRegularExpression rolesRx(QStringLiteral("^@(\\w+):?(\\w*)/?(\\w*)")); const QRegularExpressionMatch match = rolesRx.match(context); if (match.hasMatch()) { roleName = match.captured(1); cueName = match.captured(2); formatName = match.captured(3); } } } and the results were: PASS : KLocalizedStringTest::benchmarkRegexSimple() RESULT : KLocalizedStringTest::benchmarkRegexSimple(): 0.0000098 msecs per iteration (total: 83, iterations: 8388608) PASS : KLocalizedStringTest::benchmarkRegex2() RESULT : KLocalizedStringTest::benchmarkRegex2(): 0.00054 msecs per iteration (total: 72, iterations: 131072) it doesn't look like a lot of difference to me; WDYT? REPOSITORY R249 KI18n REVISION DETAIL https://phabricator.kde.org/D26366 To: ahmadsamir, #frameworks, ilic, dfaure, mlaurent, aacid Cc: kde-frameworks-devel, LeGast00n, GB_2, michaelh, ngraham, bruns