From c8f605bbfcc9896775acfbff17f46e5cb32aca1c Mon Sep 17 00:00:00 2001 From: Jan Kaluza Date: Tue, 18 Dec 2012 14:02:29 +0100 Subject: [PATCH] simple benchmark --- src/tests/networkpluginserver.cpp | 61 +++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/src/tests/networkpluginserver.cpp b/src/tests/networkpluginserver.cpp index 363d38dc..e880c2ad 100644 --- a/src/tests/networkpluginserver.cpp +++ b/src/tests/networkpluginserver.cpp @@ -22,15 +22,38 @@ #include "Swiften/Server/ServerFromClientSession.h" #include "Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.h" #include "basictest.h" +#include +#include +#include // for clock() using namespace Transport; +class Clock { + public: + double m_beginTime; + double m_elapsedTime; + + void start() { + m_beginTime = clock(); + } + + void end() { + m_elapsedTime = double(clock() - m_beginTime) / CLOCKS_PER_SEC; + } + + double elapsedTime() const { + return m_elapsedTime; + } +}; + class NetworkPluginServerTest : public CPPUNIT_NS :: TestFixture, public BasicTest { CPPUNIT_TEST_SUITE(NetworkPluginServerTest); CPPUNIT_TEST(handleBuddyChangedPayload); CPPUNIT_TEST(handleBuddyChangedPayloadNoEscaping); CPPUNIT_TEST(handleBuddyChangedPayloadUserContactInRoster); CPPUNIT_TEST(handleMessageHeadline); + + CPPUNIT_TEST(benchmarkHandleBuddyChangedPayload); CPPUNIT_TEST_SUITE_END(); public: @@ -51,6 +74,44 @@ class NetworkPluginServerTest : public CPPUNIT_NS :: TestFixture, public BasicTe tearMeDown(); } + void benchmarkHandleBuddyChangedPayload() { + Clock clk; + std::vector lst; + for (int i = 0; i < 2000; i++) { + pbnetwork::Buddy buddy; + buddy.set_username("user@localhost"); + buddy.set_buddyname("buddy" + boost::lexical_cast(i) + "@test"); + + std::string message; + buddy.SerializeToString(&message); + lst.push_back(message); + } + + std::vector lst2; + for (int i = 0; i < 2000; i++) { + pbnetwork::Buddy buddy; + buddy.set_username("user@localhost"); + buddy.set_buddyname("buddy" + boost::lexical_cast(i) + "@test"); + buddy.set_status((pbnetwork::StatusType) 2); + + std::string message; + buddy.SerializeToString(&message); + lst2.push_back(message); + } + + clk.start(); + for (int i = 0; i < 2000; i++) { + serv->handleBuddyChangedPayload(lst[i]); + received.clear(); + } + for (int i = 0; i < 2000; i++) { + serv->handleBuddyChangedPayload(lst2[i]); + received.clear(); + } + clk.end(); + std::cerr << " " << clk.elapsedTime() << " s"; + } + void handleBuddyChangedPayload() { User *user = userManager->getUser("user@localhost");