https://bugs.kde.org/show_bug.cgi?id=361691
Stephen Kelly <steve...@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|INVALID |--- Status|RESOLVED |REOPENED Ever confirmed|0 |1 --- Comment #10 from Stephen Kelly <steve...@gmail.com> --- I modified the testcase to test a non-empty string: #include <QString> #include <QDebug> #define N 100000 bool testQStringLiteral() { qDebug() << "QStringLiteral"; bool result = false; QString s; for (auto i = 0; i < 1000; ++i) { s += QStringLiteral("Long string part %1 --").arg(i); } for (int i = 0; i < N; ++i) { result |= s.contains(QStringLiteral("foo")); } return result; } bool testQLatin1String() { qDebug() << "QLatin1String"; bool result = false; QString s; for (auto i = 0; i < 1000; ++i) { s += QStringLiteral("Long string part %1 --").arg(i); } for (int i = 0; i < N; ++i) { result |= s.contains(QLatin1String("foo")); } return result; } int main(int argv, char **) { if (argv == 1) { return testQLatin1String(); } else { return testQStringLiteral(); } } Here's my result $ perf stat ./qttester QLatin1String Performance counter stats for './qttester': 2780.971861 task-clock (msec) # 1.001 CPUs utilized 4 context-switches # 0.001 K/sec 0 cpu-migrations # 0.000 K/sec 287 page-faults # 0.103 K/sec 8,751,360,206 cycles # 3.147 GHz (83.30%) 1,093,537,940 stalled-cycles-frontend # 12.50% frontend cycles idle (83.30%) 18,016,598 stalled-cycles-backend # 0.21% backend cycles idle (66.60%) 25,205,593,541 instructions # 2.88 insns per cycle # 0.04 stalled cycles per insn (83.30%) 4,581,167,754 branches # 1647.326 M/sec (83.44%) 132,291 branch-misses # 0.00% of all branches (83.39%) 2.778918892 seconds time elapsed $ perf stat ./qttester 1 QStringLiteral Performance counter stats for './qttester 1': 3136.221850 task-clock (msec) # 1.001 CPUs utilized 5 context-switches # 0.002 K/sec 0 cpu-migrations # 0.000 K/sec 281 page-faults # 0.090 K/sec 8,869,692,354 cycles # 2.828 GHz (83.28%) 1,988,983,951 stalled-cycles-frontend # 22.42% frontend cycles idle (83.28%) 20,247,953 stalled-cycles-backend # 0.23% backend cycles idle (66.67%) 25,190,950,431 instructions # 2.84 insns per cycle # 0.08 stalled cycles per insn (83.40%) 4,580,392,600 branches # 1460.481 M/sec (83.40%) 138,789 branch-misses # 0.00% of all branches (83.40%) 3.133671112 seconds time elapsed I don't think clazy is right here. I think clazy is recommending something which is against intuition, and I don't think the benchmarks here justify that. Optimizing for an empty string doesn't make sense. -- You are receiving this mail because: You are watching all bug changes.