From 197175c8b9e11fce379e77bdba6441c74097bd58 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Sun, 21 Oct 2018 14:25:52 +0200 Subject: Add MatcherBenchmark --- test/CMakeLists.txt | 13 ++++++-- test/matcherbenchmark/matcherbenchmark.cpp | 51 ++++++++++++++++++++++++++++++ test/matcherbenchmark/matcherbenchmark.h | 17 ++++++++++ 3 files changed, 79 insertions(+), 2 deletions(-) create mode 100644 test/matcherbenchmark/matcherbenchmark.cpp create mode 100644 test/matcherbenchmark/matcherbenchmark.h (limited to 'test') diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 6b740d7..4a802d1 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -2,6 +2,7 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) +# AdblockTest add_executable(AdBlockTest adblock/adblocktest.cpp adblock/adblocktest.h @@ -9,13 +10,21 @@ add_executable(AdBlockTest target_include_directories(AdBlockTest PRIVATE ../lib/urlfilter) target_link_libraries(AdBlockTest Qt5::Test urlfilter) +add_test(NAME urlfilter-adblock COMMAND AdBlockTest WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}) +# HostlistTest add_executable(HostlistTest hostlist/hostlisttest.cpp hostlist/hostlisttest.h ) target_include_directories(HostlistTest PRIVATE ../lib/urlfilter/) target_link_libraries(HostlistTest Qt5::Test urlfilter) - -add_test(NAME urlfilter-adblock COMMAND AdBlockTest WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}) add_test(NAME urlfilter-hostlist COMMAND HostlistTest WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}) + +# matching algorithm benchmark +add_executable(MatcherBenchmark + matcherbenchmark/matcherbenchmark.cpp + matcherbenchmark/matcherbenchmark.h +) +target_link_libraries(MatcherBenchmark Qt5::Test) +add_test(NAME matcher-benchmark COMMAND MatcherBenchmark WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}) diff --git a/test/matcherbenchmark/matcherbenchmark.cpp b/test/matcherbenchmark/matcherbenchmark.cpp new file mode 100644 index 0000000..cb4feb1 --- /dev/null +++ b/test/matcherbenchmark/matcherbenchmark.cpp @@ -0,0 +1,51 @@ +#include "matcherbenchmark.h" +#include +#include +#include +#include + +void MatcherBenchmark::qstringcontains() +{ + const QString pattern("spamdomain"); + const QString request("subdomain.spamdomain.com"); + + QCOMPARE(request.contains(pattern), true); + QBENCHMARK { + request.contains(pattern); + } +} + +void MatcherBenchmark::qstringmatcher() +{ + const QStringMatcher pattern("spamdomain"); + const QString request("subdomain.spamdomain.com"); + + QCOMPARE(pattern.indexIn(request) != -1, true); + QBENCHMARK { + pattern.indexIn(request); + } +} + +void MatcherBenchmark::qregexp() +{ + const QRegExp pattern("spamdomain"); + const QString request("subdomain.spamdomain.com"); + + QCOMPARE(pattern.indexIn(request) != -1, true); + QBENCHMARK { + pattern.indexIn(request); + } +} + +void MatcherBenchmark::qregularexpressionmatch() +{ + const QRegularExpression pattern("spamdomain"); + const QString request("subdomain.spamdomain.com"); + + QCOMPARE(pattern.match(request).hasMatch(), true); + QBENCHMARK { + QCOMPARE(pattern.match(request).hasMatch(), true); + } +} + +QTEST_GUILESS_MAIN(MatcherBenchmark) diff --git a/test/matcherbenchmark/matcherbenchmark.h b/test/matcherbenchmark/matcherbenchmark.h new file mode 100644 index 0000000..cdc77f6 --- /dev/null +++ b/test/matcherbenchmark/matcherbenchmark.h @@ -0,0 +1,17 @@ +#ifndef MATCHER_BENCHMARK +#define MATCHER_BENCHMARK + +#include + +class MatcherBenchmark : public QObject +{ + Q_OBJECT + +private slots: + void qstringcontains(); + void qstringmatcher(); + void qregexp(); + void qregularexpressionmatch(); +}; + +#endif -- cgit v1.2.1