added bmessage speed tests

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13671 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Jérôme Duval 2005-07-14 13:07:13 +00:00
parent 8eefa6ccc5
commit f75b92e753
4 changed files with 345 additions and 0 deletions

View File

@ -76,6 +76,7 @@ CommonTestLib libapptest.so
MessageDestructTest.cpp
MessageOpAssignTest.cpp
MessageEasyFindTest.cpp
MessageSpeedTest.cpp
# BMessageQueue
MessageQueueTest.cpp

View File

@ -0,0 +1,287 @@
//------------------------------------------------------------------------------
// TMessageSpeedTest.cpp
// Written on 04 - 13 - 2005 by Olivier Milla (methedras at online dot fr)
//------------------------------------------------------------------------------
// Standard Includes -----------------------------------------------------------
#include <iostream>
#include <time.h>
// System Includes -------------------------------------------------------------
#include <Entry.h>
#include <File.h>
#include <Message.h>
#include <String.h>
// 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 $
*
*/

View File

@ -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 $
*
*/

View File

@ -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;
}