mirror of
https://github.com/mumble-voip/mumble.git
synced 2025-10-26 11:19:16 +00:00
Speedtest of Protocol Buffers
git-svn-id: https://mumble.svn.sourceforge.net/svnroot/mumble/trunk@1540 05730e5d-ab1b-0410-a4ac-84af385074fa
This commit is contained in:
parent
e2586a480a
commit
39519d2a53
213
src/tests/ProtoBuf.cpp
Normal file
213
src/tests/ProtoBuf.cpp
Normal file
@ -0,0 +1,213 @@
|
||||
#include <QtCore>
|
||||
#include "Timer.h"
|
||||
#include "Message.h"
|
||||
#include "PacketDataStream.h"
|
||||
#include "ProtoBuf.pb.h"
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
QCoreApplication a(argc, argv);
|
||||
Timer t;
|
||||
|
||||
unsigned char buff[1024];
|
||||
|
||||
Authenticate apb;
|
||||
|
||||
QString n = QLatin1String("My Name");
|
||||
QString p = QLatin1String("My Password");
|
||||
|
||||
int v;
|
||||
|
||||
t.restart();
|
||||
for (int i=0;i<1000000;++i) {
|
||||
MessageServerAuthenticate ma;
|
||||
Message *m = &ma;
|
||||
ma.uiSession = 1;
|
||||
ma.iVersion = -1;
|
||||
ma.qsUsername = n;
|
||||
ma.qsPassword = p;
|
||||
|
||||
PacketDataStream out(buff, 256);
|
||||
m->messageToNetwork(out);
|
||||
|
||||
PacketDataStream in(buff, out.size());
|
||||
delete m->networkToMessage(in);
|
||||
|
||||
v = out.size();
|
||||
}
|
||||
printf("MsgBased : %8lld %d\n", t.elapsed(), v);
|
||||
|
||||
t.restart();
|
||||
for (int i=0;i<1000000;++i) {
|
||||
Authenticate apb;
|
||||
apb.set_version(-1);
|
||||
apb.set_name(n.toStdString());
|
||||
apb.set_pw(p.toStdString());
|
||||
|
||||
std::string str;
|
||||
|
||||
Universal u;
|
||||
u.set_session(1);
|
||||
* (u.mutable_authenticate()) = apb;
|
||||
|
||||
u.SerializeToString(&str);
|
||||
u.ParseFromString(str);
|
||||
|
||||
const Authenticate &a = u.authenticate();
|
||||
|
||||
QString qn = QString::fromStdString(a.name());
|
||||
QString qp = QString::fromStdString(a.pw());
|
||||
|
||||
|
||||
v = str.length();
|
||||
}
|
||||
printf("ProtoBuf : %8lld %d\n", t.elapsed(), v);
|
||||
|
||||
t.restart();
|
||||
for (int i=0;i<1000000;++i) {
|
||||
Universal u;
|
||||
u.set_session(1);
|
||||
Authenticate *apb = u.mutable_authenticate();
|
||||
apb->set_version(-1);
|
||||
apb->set_name(n.toStdString());
|
||||
apb->set_pw(p.toStdString());
|
||||
|
||||
std::string str;
|
||||
|
||||
u.SerializeToString(&str);
|
||||
u.ParseFromString(str);
|
||||
|
||||
const Authenticate &a = u.authenticate();
|
||||
|
||||
QString qn = QString::fromStdString(a.name());
|
||||
QString qp = QString::fromStdString(a.pw());
|
||||
|
||||
v = str.length();
|
||||
}
|
||||
printf("PBDirect : %8lld %d\n", t.elapsed(), v);
|
||||
|
||||
std::string sn = n.toStdString();
|
||||
std::string sp = p.toStdString();
|
||||
|
||||
t.restart();
|
||||
for (int i=0;i<1000000;++i) {
|
||||
Universal u;
|
||||
u.set_session(1);
|
||||
Authenticate *apb = u.mutable_authenticate();
|
||||
apb->set_version(-1);
|
||||
apb->set_name(sn);
|
||||
apb->set_pw(sp);
|
||||
|
||||
std::string str;
|
||||
|
||||
u.SerializeToString(&str);
|
||||
u.ParseFromString(str);
|
||||
|
||||
const Authenticate &a = u.authenticate();
|
||||
|
||||
std::string nn = a.name();
|
||||
std::string np = a.pw();
|
||||
|
||||
v = str.length();
|
||||
}
|
||||
printf("PBStdStr : %8lld %d\n", t.elapsed(), v);
|
||||
|
||||
t.restart();
|
||||
for (int i=0;i<1000000;++i) {
|
||||
Universal u;
|
||||
u.set_session(1);
|
||||
Authenticate *apb = u.mutable_authenticate();
|
||||
apb->set_version(-1);
|
||||
apb->set_name(n.toStdString());
|
||||
apb->set_pw(p.toStdString());
|
||||
|
||||
std::string str;
|
||||
|
||||
v = u.ByteSize();
|
||||
|
||||
u.SerializeToArray(buff, v);
|
||||
u.ParseFromArray(buff, v);
|
||||
|
||||
const Authenticate &a = u.authenticate();
|
||||
|
||||
QString qn = QString::fromStdString(a.name());
|
||||
QString qp = QString::fromStdString(a.pw());
|
||||
}
|
||||
printf("PBArray : %8lld %d\n", t.elapsed(), v);
|
||||
|
||||
t.restart();
|
||||
for (int i=0;i<1000000;++i) {
|
||||
Universal u;
|
||||
u.set_session(1);
|
||||
Authenticate *apb = u.MutableExtension(extauth);
|
||||
apb->set_version(-1);
|
||||
apb->set_name(n.toStdString());
|
||||
apb->set_pw(p.toStdString());
|
||||
|
||||
std::string str;
|
||||
|
||||
v = u.ByteSize();
|
||||
|
||||
u.SerializeToArray(buff, v);
|
||||
u.ParseFromArray(buff, v);
|
||||
|
||||
const Authenticate &a = u.GetExtension(extauth);
|
||||
|
||||
QString qn = QString::fromStdString(a.name());
|
||||
QString qp = QString::fromStdString(a.pw());
|
||||
}
|
||||
printf("PBExt : %8lld %d\n", t.elapsed(), v);
|
||||
|
||||
t.restart();
|
||||
for (int i=0;i<1000000;++i) {
|
||||
LongUniversal u;
|
||||
u.set_session(1);
|
||||
Authenticate *apb = u.mutable_z();
|
||||
apb->set_version(-1);
|
||||
apb->set_name(n.toStdString());
|
||||
apb->set_pw(p.toStdString());
|
||||
|
||||
std::string str;
|
||||
|
||||
v = u.ByteSize();
|
||||
|
||||
u.SerializeToArray(buff, v);
|
||||
u.ParseFromArray(buff, v);
|
||||
|
||||
const Authenticate &a = u.z();
|
||||
|
||||
QString qn = QString::fromStdString(a.name());
|
||||
QString qp = QString::fromStdString(a.pw());
|
||||
}
|
||||
printf("PBLong : %8lld %d\n", t.elapsed(), v);
|
||||
|
||||
LongUniversal u;
|
||||
t.restart();
|
||||
for (int i=0;i<1000000;++i) {
|
||||
u.Clear();
|
||||
u.set_session(1);
|
||||
Authenticate *apb = u.mutable_z();
|
||||
apb->set_version(-1);
|
||||
apb->set_name(n.toStdString());
|
||||
apb->set_pw(p.toStdString());
|
||||
|
||||
std::string str;
|
||||
|
||||
v = u.ByteSize();
|
||||
|
||||
u.SerializeToArray(buff, v);
|
||||
u.ParseFromArray(buff, v);
|
||||
|
||||
const Authenticate &a = u.z();
|
||||
|
||||
QString qn = QString::fromStdString(a.name());
|
||||
QString qp = QString::fromStdString(a.pw());
|
||||
}
|
||||
printf("PBCache : %8lld %d\n", t.elapsed(), v);
|
||||
|
||||
t.restart();
|
||||
for (int i=0;i<1000000;++i) {
|
||||
QString nn = QString::fromStdString(n.toStdString());
|
||||
QString np = QString::fromStdString(p.toStdString());
|
||||
}
|
||||
printf("QString : %8lld %d\n", t.elapsed(), v);
|
||||
}
|
||||
18
src/tests/ProtoBuf.pro
Normal file
18
src/tests/ProtoBuf.pro
Normal file
@ -0,0 +1,18 @@
|
||||
TEMPLATE =app
|
||||
CONFIG += qt thread warn_on release qtestlib no_keywords
|
||||
LANGUAGE = C++
|
||||
TARGET = ProtoBuf
|
||||
HEADERS = Message.h
|
||||
PROTOS = ProtoBuf.proto
|
||||
SOURCES = ProtoBuf.cpp Timer.cpp Message.cpp ProtoBuf.pb.cc
|
||||
VPATH += .. proto
|
||||
INCLUDEPATH += .. ../murmur ../mumble proto
|
||||
LIBS += -lboost_signals -lprotobuf
|
||||
QMAKE_CXXFLAGS *= -O3
|
||||
|
||||
protoc.output = ${QMAKE_FILE_BASE}.pb.cc ${QMAKE_FILE_BASE}.pb.h
|
||||
protoc.commands = protoc ${QMAKE_FILE_NAME} --cpp_out=.
|
||||
protoc.input = PROTOS
|
||||
protoc.CONFIG *= no_link target_predeps
|
||||
|
||||
QMAKE_EXTRA_COMPILERS *= protoc
|
||||
55
src/tests/ProtoBuf.proto
Normal file
55
src/tests/ProtoBuf.proto
Normal file
@ -0,0 +1,55 @@
|
||||
option optimize_for = SPEED;
|
||||
|
||||
message Authenticate {
|
||||
required sint32 version = 1;
|
||||
required string name = 2;
|
||||
optional string pw = 3;
|
||||
}
|
||||
|
||||
message SomethingElse {
|
||||
required sint32 thingy = 1;
|
||||
}
|
||||
|
||||
message Universal {
|
||||
extensions 5 to max;
|
||||
required uint32 session = 1;
|
||||
optional Authenticate authenticate = 2;
|
||||
optional SomethingElse somethingelse = 3;
|
||||
}
|
||||
|
||||
extend Universal {
|
||||
optional Authenticate extauth = 5;
|
||||
optional SomethingElse extelse = 6;
|
||||
}
|
||||
|
||||
message LongUniversal {
|
||||
required uint32 session = 1;
|
||||
optional Authenticate authenticate = 2;
|
||||
optional SomethingElse somethingelse = 3;
|
||||
optional Authenticate a = 4;
|
||||
optional Authenticate b = 5;
|
||||
optional Authenticate c = 6;
|
||||
optional Authenticate d = 7;
|
||||
optional Authenticate e = 8;
|
||||
optional Authenticate f = 9;
|
||||
optional Authenticate g = 10;
|
||||
optional Authenticate h = 11;
|
||||
optional Authenticate i = 12;
|
||||
optional Authenticate j = 13;
|
||||
optional Authenticate k = 14;
|
||||
optional Authenticate l = 15;
|
||||
optional Authenticate m = 16;
|
||||
optional Authenticate n = 17;
|
||||
optional Authenticate o = 18;
|
||||
optional Authenticate p = 19;
|
||||
optional Authenticate q = 20;
|
||||
optional Authenticate r = 21;
|
||||
optional Authenticate s = 22;
|
||||
optional Authenticate t = 23;
|
||||
optional Authenticate u = 24;
|
||||
optional Authenticate v = 25;
|
||||
optional Authenticate w = 26;
|
||||
optional Authenticate x = 27;
|
||||
optional Authenticate y = 28;
|
||||
optional Authenticate z = 29;
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user