From f75b92e75332ca577931c47871a908b3bc1875f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Thu, 14 Jul 2005 13:07:13 +0000 Subject: [PATCH] added bmessage speed tests git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13671 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/tests/kits/app/Jamfile | 1 + .../kits/app/bmessage/MessageSpeedTest.cpp | 287 ++++++++++++++++++ .../kits/app/bmessage/MessageSpeedTest.h | 55 ++++ src/tests/kits/app/bmessage/MessageTest.cpp | 2 + 4 files changed, 345 insertions(+) create mode 100644 src/tests/kits/app/bmessage/MessageSpeedTest.cpp create mode 100644 src/tests/kits/app/bmessage/MessageSpeedTest.h diff --git a/src/tests/kits/app/Jamfile b/src/tests/kits/app/Jamfile index 64e16d7c54..92fdb1d911 100644 --- a/src/tests/kits/app/Jamfile +++ b/src/tests/kits/app/Jamfile @@ -76,6 +76,7 @@ CommonTestLib libapptest.so MessageDestructTest.cpp MessageOpAssignTest.cpp MessageEasyFindTest.cpp + MessageSpeedTest.cpp # BMessageQueue MessageQueueTest.cpp diff --git a/src/tests/kits/app/bmessage/MessageSpeedTest.cpp b/src/tests/kits/app/bmessage/MessageSpeedTest.cpp new file mode 100644 index 0000000000..f420ce37bd --- /dev/null +++ b/src/tests/kits/app/bmessage/MessageSpeedTest.cpp @@ -0,0 +1,287 @@ +//------------------------------------------------------------------------------ +// TMessageSpeedTest.cpp +// Written on 04 - 13 - 2005 by Olivier Milla (methedras at online dot fr) +//------------------------------------------------------------------------------ + +// Standard Includes ----------------------------------------------------------- +#include +#include + +// System Includes ------------------------------------------------------------- +#include +#include +#include +#include + +// Project Includes ------------------------------------------------------------ + +// Local Includes -------------------------------------------------------------- +#include "MessageSpeedTest.h" + +// Local Defines --------------------------------------------------------------- + +// Globals --------------------------------------------------------------------- + +//------------------------------------------------------------------------------ +void TMessageSpeedTest::MessageSpeedTestCreate5Int32() +{ + BMessage message; + + bigtime_t length = 0; + + for (int32 i=0; i<5; i++){ + bigtime_t stamp = real_time_clock_usecs(); + message.AddInt32("data",i); + length += (real_time_clock_usecs() - stamp); + } + cout << "TMessageSpeedTest::Time to add 5 int32 in a message = " + << length << "usec" << endl; +} +//------------------------------------------------------------------------------ +void TMessageSpeedTest::MessageSpeedTestLookup5Int32() +{ + srand(time(NULL)); + + BMessage message; + + for (int32 i=0; i<5; i++){ + BString string; + string << i; + message.AddInt32(string.String(),i); + } + BString search; + search << rand()%5; + const char *string = search.String(); + int32 res; + + bigtime_t stamp = real_time_clock_usecs(); + message.FindInt32(string,&res); + bigtime_t length = real_time_clock_usecs() - stamp; + cout << "TMessageSpeedTest::Time to find a data in a message containing 5 datas = " + << length << "usec" << endl; +} +//------------------------------------------------------------------------------ +void TMessageSpeedTest::MessageSpeedTestLookup50Int32() +{ + srand(time(NULL)); + + BMessage message; + + for (int32 i=0; i<50; i++){ + BString string; + string << i; + message.AddInt32(string.String(),i); + } + BString search; + search << rand()%50; + const char *string = search.String(); + int32 res; + + bigtime_t stamp = real_time_clock_usecs(); + message.FindInt32(string,&res); + bigtime_t length = real_time_clock_usecs() - stamp; + cout << "TMessageSpeedTest::Time to find a data in a message containing 50 datas = " + << length << "usec" << endl; +} +//------------------------------------------------------------------------------ +void TMessageSpeedTest::MessageSpeedTestLookup500Int32() +{ + srand(time(NULL)); + + BMessage message; + + for (int32 i=0; i<500; i++){ + BString string; + string << i; + message.AddInt32(string.String(),i); + } + BString search; + search << rand()%500; + const char *string = search.String(); + int32 res; + + bigtime_t stamp = real_time_clock_usecs(); + message.FindInt32(string,&res); + bigtime_t length = real_time_clock_usecs() - stamp; + cout << "TMessageSpeedTest::Time to find a data in a message containing 500 datas = " + << length << "usec" << endl; +} +//------------------------------------------------------------------------------ +void TMessageSpeedTest::MessageSpeedTestRead500Int32() +{ + srand(time(NULL)); + + BMessage message; + + for (int32 i=0; i<500; i++) + message.AddInt32("data",i); + + int32 res; + bigtime_t length = 0; + for (int32 i=0; i<500; i++){ + bigtime_t stamp = real_time_clock_usecs(); + message.FindInt32("data",i,&res); + length += (real_time_clock_usecs() - stamp); + } + cout << "TMessageSpeedTest::Time to retrieve 500 Int32 out of a message = " + << length << "usec. Giving " << length/500 << "usec per retrieve" << endl; +} +//------------------------------------------------------------------------------ +void TMessageSpeedTest::MessageSpeedTestFlatten5Int32() +{ + BMessage message; + + for (int32 i=0; i<5; i++) + message.AddInt32("data",i); + + BEntry entry("/tmp/bmessagetest"); + BFile file(&entry,B_READ_WRITE); + bigtime_t stamp = real_time_clock_usecs(); + message.Flatten(&file); + bigtime_t length = real_time_clock_usecs() - stamp; + cout << "TMessageSpeedTest::Time to flatten a message containing 5 Int32 = " + << length << "usec. Giving " << length/5 << "usec per data" << endl; + + //delete the file + file.Unset(); + entry.Remove(); +} + +//------------------------------------------------------------------------------ +void TMessageSpeedTest::MessageSpeedTestFlatten50Int32() +{ + BMessage message; + + for (int32 i=0; i<50; i++) + message.AddInt32("data",i); + + BEntry entry("/tmp/bmessagetest"); + BFile file(&entry,B_READ_WRITE); + bigtime_t stamp = real_time_clock_usecs(); + message.Flatten(&file); + bigtime_t length = real_time_clock_usecs() - stamp; + cout << "TMessageSpeedTest::Time to flatten a message containing 50 Int32 = " + << length << "usec. Giving " << length/50 << "usec per data" << endl; + + //delete the file + file.Unset(); + entry.Remove(); +} +//------------------------------------------------------------------------------ +void TMessageSpeedTest::MessageSpeedTestFlatten500Int32() +{ + BMessage message; + + for (int32 i=0; i<500; i++) + message.AddInt32("data",i); + + BEntry entry("/tmp/bmessagetest"); + BFile file(&entry,B_READ_WRITE); + bigtime_t stamp = real_time_clock_usecs(); + message.Flatten(&file); + bigtime_t length = real_time_clock_usecs() - stamp; + cout << "TMessageSpeedTest::Time to flatten a message containing 500 Int32 = " + << length << "usec. Giving " << length/500 << "usec per data" << endl; + + //delete the file + file.Unset(); + entry.Remove(); +} +//------------------------------------------------------------------------------ +void TMessageSpeedTest::MessageSpeedTestUnflatten5Int32() +{ + BMessage message; + + for (int32 i=0; i<5; i++) + message.AddInt32("data",i); + + BEntry entry("/tmp/bmessagetest"); + BFile file(&entry,B_READ_WRITE); + message.Flatten(&file); + + BMessage rebuilt; + bigtime_t stamp = real_time_clock_usecs(); + rebuilt.Unflatten(&file); + bigtime_t length = real_time_clock_usecs() - stamp; + cout << "TMessageSpeedTest::Time to unflatten a message containing 5 Int32 = " + << length << "usec. Giving " << length/5 << "usec per data" << endl; + + //delete the file + file.Unset(); + entry.Remove(); +} +//------------------------------------------------------------------------------ +void TMessageSpeedTest::MessageSpeedTestUnflatten50Int32() +{ + BMessage message; + + for (int32 i=0; i<50; i++) + message.AddInt32("data",i); + + BEntry entry("/tmp/bmessagetest"); + BFile file(&entry,B_READ_WRITE); + message.Flatten(&file); + + BMessage rebuilt; + bigtime_t stamp = real_time_clock_usecs(); + rebuilt.Unflatten(&file); + bigtime_t length = real_time_clock_usecs() - stamp; + cout << "TMessageSpeedTest::Time to unflatten a message containing 50 Int32 = " + << length << "usec. Giving " << length/50 << "usec per data" << endl; + + //delete the file + file.Unset(); + entry.Remove(); +} +//------------------------------------------------------------------------------ +void TMessageSpeedTest::MessageSpeedTestUnflatten500Int32() +{ + BMessage message; + + for (int32 i=0; i<500; i++) + message.AddInt32("data",i); + + BEntry entry("/tmp/bmessagetest"); + BFile file(&entry,B_READ_WRITE); + message.Flatten(&file); + + BMessage rebuilt; + bigtime_t stamp = real_time_clock_usecs(); + rebuilt.Unflatten(&file); + bigtime_t length = real_time_clock_usecs() - stamp; + cout << "TMessageSpeedTest::Time to unflatten a message containing 500 Int32 = " + << length << "usec. Giving " << length/500 << "usec per data" << endl; + + //delete the file + file.Unset(); + entry.Remove(); +} +//------------------------------------------------------------------------------ +TestSuite* TMessageSpeedTest::Suite() +{ + TestSuite* suite = new TestSuite("BMessage::Test of Performance"); + + ADD_TEST4(BMessage, suite, TMessageSpeedTest, MessageSpeedTestCreate5Int32); + ADD_TEST4(BMessage, suite, TMessageSpeedTest, MessageSpeedTestLookup5Int32); + ADD_TEST4(BMessage, suite, TMessageSpeedTest, MessageSpeedTestLookup50Int32); + ADD_TEST4(BMessage, suite, TMessageSpeedTest, MessageSpeedTestLookup500Int32); + ADD_TEST4(BMessage, suite, TMessageSpeedTest, MessageSpeedTestRead500Int32); + ADD_TEST4(BMessage, suite, TMessageSpeedTest, MessageSpeedTestFlatten5Int32); + ADD_TEST4(BMessage, suite, TMessageSpeedTest, MessageSpeedTestFlatten50Int32); + ADD_TEST4(BMessage, suite, TMessageSpeedTest, MessageSpeedTestFlatten500Int32); + ADD_TEST4(BMessage, suite, TMessageSpeedTest, MessageSpeedTestUnflatten5Int32); + ADD_TEST4(BMessage, suite, TMessageSpeedTest, MessageSpeedTestUnflatten50Int32); + ADD_TEST4(BMessage, suite, TMessageSpeedTest, MessageSpeedTestUnflatten500Int32); + + return suite; +} +//------------------------------------------------------------------------------ + + +/* + * $Log $ + * + * $Id $ + * + */ + diff --git a/src/tests/kits/app/bmessage/MessageSpeedTest.h b/src/tests/kits/app/bmessage/MessageSpeedTest.h new file mode 100644 index 0000000000..60e9e681ef --- /dev/null +++ b/src/tests/kits/app/bmessage/MessageSpeedTest.h @@ -0,0 +1,55 @@ +//------------------------------------------------------------------------------ +// MessageSpeedTest.h +// Written on 04 - 13 - 2005 by Olivier Milla (methedras at online dot fr) +//------------------------------------------------------------------------------ + +#ifndef MESSAGESPEEDTEST_H +#define MESSAGESPEEDTEST_H + +// Standard Includes ----------------------------------------------------------- + +// System Includes ------------------------------------------------------------- + +// Project Includes ------------------------------------------------------------ + +// Local Includes -------------------------------------------------------------- +#include "../common.h" + +// Local Defines --------------------------------------------------------------- + +// Globals --------------------------------------------------------------------- + +class TMessageSpeedTest : public TestCase +{ + public: + TMessageSpeedTest() {;} + TMessageSpeedTest(std::string name) : TestCase(name) {;} + + void MessageSpeedTestCreate5Int32(); + + void MessageSpeedTestLookup5Int32(); + void MessageSpeedTestLookup50Int32(); + void MessageSpeedTestLookup500Int32(); + + void MessageSpeedTestRead500Int32(); + + void MessageSpeedTestFlatten5Int32(); + void MessageSpeedTestFlatten50Int32(); + void MessageSpeedTestFlatten500Int32(); + + void MessageSpeedTestUnflatten5Int32(); + void MessageSpeedTestUnflatten50Int32(); + void MessageSpeedTestUnflatten500Int32(); + + static TestSuite* Suite(); +}; + +#endif // MESSAGESPEEDTEST_H + +/* + * $Log $ + * + * $Id $ + * + */ + diff --git a/src/tests/kits/app/bmessage/MessageTest.cpp b/src/tests/kits/app/bmessage/MessageTest.cpp index 0a2758c52a..eb41c9bc13 100644 --- a/src/tests/kits/app/bmessage/MessageTest.cpp +++ b/src/tests/kits/app/bmessage/MessageTest.cpp @@ -21,6 +21,7 @@ #include "MessageMessengerItemTest.h" #include "MessagePointerItemTest.h" #include "MessageFlattenableItemTest.h" +#include "MessageSpeedTest.h" Test* MessageTestSuite() { @@ -46,6 +47,7 @@ Test* MessageTestSuite() tests->addTest(TMessageMessengerItemTest::Suite()); tests->addTest(TMessagePointerItemTest::Suite()); tests->addTest(TMessageFlattenableItemTest::Suite()); + tests->addTest(TMessageSpeedTest::Suite()); return tests; }