From 63a382a93073a96457a41118753ae88547023cac Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 13 Sep 2013 11:20:55 +0200 Subject: Add a static QFileInfo::exists(fileName) function This avoids dynamic construction of the private class. According to the benchmark we go from 4,550 to 3,900 instruction reads per iteration. (without change 32629676 the baseline is 5,600) Change-Id: I5df925e30dbd49bdde87173e481820574ce5abe1 Reviewed-by: Thiago Macieira --- tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp | 1 + tests/benchmarks/corelib/io/qfileinfo/main.cpp | 14 ++++++++++++++ 2 files changed, 15 insertions(+) (limited to 'tests') diff --git a/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp b/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp index af2578ac37..d2171cc64a 100644 --- a/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp +++ b/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp @@ -438,6 +438,7 @@ void tst_QFileInfo::exists() QFileInfo fi(path); QCOMPARE(fi.exists(), expected); + QCOMPARE(QFileInfo::exists(path), expected); } void tst_QFileInfo::absolutePath_data() diff --git a/tests/benchmarks/corelib/io/qfileinfo/main.cpp b/tests/benchmarks/corelib/io/qfileinfo/main.cpp index 2e63795978..594e5b7478 100644 --- a/tests/benchmarks/corelib/io/qfileinfo/main.cpp +++ b/tests/benchmarks/corelib/io/qfileinfo/main.cpp @@ -52,6 +52,8 @@ class qfileinfo : public QObject { Q_OBJECT private slots: + void existsTemporary(); + void existsStatic(); #if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) void symLinkTargetPerformanceLNK(); void symLinkTargetPerformanceMounpoint(); @@ -70,6 +72,18 @@ void qfileinfo::cleanupTestCase() { } +void qfileinfo::existsTemporary() +{ + QString appPath = QCoreApplication::applicationFilePath(); + QBENCHMARK { QFileInfo(appPath).exists(); } +} + +void qfileinfo::existsStatic() +{ + QString appPath = QCoreApplication::applicationFilePath(); + QBENCHMARK { QFileInfo::exists(appPath); } +} + #if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) void qfileinfo::symLinkTargetPerformanceLNK() { -- cgit v1.2.3