https://bugs.kde.org/show_bug.cgi?id=361691

--- Comment #4 from Stephen Kelly <steve...@gmail.com> ---
I also tried with larger strings. The fact that the QLatin1String overload is
slower is suspect. It could be due to the test string being very small, but
that's what I expect is the primary use-case of QLatin1String.


#include <QtTest/QTest>
#include <QtCore/QDebug>

class StringBenchmark : public QObject
{
  Q_OBJECT
public:
  StringBenchmark(QObject* parent = nullptr) : QObject(parent)
  {
    for (auto i = 0; i < 1000000; ++i)
    {
      mTestString += QStringLiteral("Long string part %1 --").arg(i);
    }
  }

private slots:
  void containsQStringLiteral() {
    QBENCHMARK {
      auto result = mTestString.contains(QStringLiteral("Long string part
557755"));
      QVERIFY(result);
    }
  }

  void containsQLatin1String() {
    QBENCHMARK {
      auto result = mTestString.contains(QLatin1String("Long string part
557755"));
      QVERIFY(result);
    }
  }

  void indexOfQStringLiteral() {
    QBENCHMARK {
      auto result = mTestString.indexOf(QStringLiteral("Long string part
557755"));
      QCOMPARE(result, 14390520);
    }
  }

  void indexOfQLatin1String() {
    QBENCHMARK {
      auto result = mTestString.indexOf(QLatin1String("Long string part
557755"));
      QCOMPARE(result, 14390520);
    }
  }

private:
  QString mTestString;
};

QTEST_MAIN(StringBenchmark)

#include "tester.moc"


********* Start testing of StringBenchmark *********
Config: Using QtTest library 5.4.2, Qt 5.4.2 (x86_64-little_endian-lp64 shared
(dynamic) release build; by GCC 5.2.1 20151010)
PASS   : StringBenchmark::initTestCase()
PASS   : StringBenchmark::containsQStringLiteral()
RESULT : StringBenchmark::containsQStringLiteral():
     5.1 msecs per iteration (total: 83, iterations: 16)
PASS   : StringBenchmark::containsQLatin1String()
RESULT : StringBenchmark::containsQLatin1String():
     5.2 msecs per iteration (total: 84, iterations: 16)
PASS   : StringBenchmark::indexOfQStringLiteral()
RESULT : StringBenchmark::indexOfQStringLiteral():
     5.2 msecs per iteration (total: 84, iterations: 16)
PASS   : StringBenchmark::indexOfQLatin1String()
RESULT : StringBenchmark::indexOfQLatin1String():
     5.2 msecs per iteration (total: 84, iterations: 16)
PASS   : StringBenchmark::cleanupTestCase()
Totals: 6 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of StringBenchmark *********

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to