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:
@@ -76,6 +76,7 @@ CommonTestLib libapptest.so
|
|||||||
MessageDestructTest.cpp
|
MessageDestructTest.cpp
|
||||||
MessageOpAssignTest.cpp
|
MessageOpAssignTest.cpp
|
||||||
MessageEasyFindTest.cpp
|
MessageEasyFindTest.cpp
|
||||||
|
MessageSpeedTest.cpp
|
||||||
|
|
||||||
# BMessageQueue
|
# BMessageQueue
|
||||||
MessageQueueTest.cpp
|
MessageQueueTest.cpp
|
||||||
|
|||||||
@@ -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 $
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
@@ -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 $
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
@@ -21,6 +21,7 @@
|
|||||||
#include "MessageMessengerItemTest.h"
|
#include "MessageMessengerItemTest.h"
|
||||||
#include "MessagePointerItemTest.h"
|
#include "MessagePointerItemTest.h"
|
||||||
#include "MessageFlattenableItemTest.h"
|
#include "MessageFlattenableItemTest.h"
|
||||||
|
#include "MessageSpeedTest.h"
|
||||||
|
|
||||||
Test* MessageTestSuite()
|
Test* MessageTestSuite()
|
||||||
{
|
{
|
||||||
@@ -46,6 +47,7 @@ Test* MessageTestSuite()
|
|||||||
tests->addTest(TMessageMessengerItemTest::Suite());
|
tests->addTest(TMessageMessengerItemTest::Suite());
|
||||||
tests->addTest(TMessagePointerItemTest::Suite());
|
tests->addTest(TMessagePointerItemTest::Suite());
|
||||||
tests->addTest(TMessageFlattenableItemTest::Suite());
|
tests->addTest(TMessageFlattenableItemTest::Suite());
|
||||||
|
tests->addTest(TMessageSpeedTest::Suite());
|
||||||
|
|
||||||
return tests;
|
return tests;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user