Files
pip/main.cpp
2021-06-14 16:17:05 +03:00

242 lines
4.9 KiB
C++

#include "pip.h"
PIPeer p0("p0"), p1("p1");
int main() {
PIMap<uint, int> sends, recs;
PISet<uint> errors, missed;
CONNECTL(&p0, dataReceivedEvent, ([&](const PIString & from, const PIByteArray & data){
uint cnt = *(uint*)(data.data());
piCout << "rec " << cnt << data.size_s();
recs[cnt] = data.size_s();
if (sends[cnt] != data.size_s()) {
piCout << " " << cnt << "ERROR";
errors << cnt;
}
}));
p0.start();
p1.start();
piSleep(2);
int count = 10;
for (int i = 0; i < count; ++i) {
PIByteArray msg;
msg << (uint)i;
msg.enlarge(randomi() % 3800 + 4000);
sends[i] = msg.size_s();
piCout << "send" << i << msg.size_s();
p1.send(p0.name(), msg);
piMSleep(100);
}
piSleep(1);
for (int i = 0; i < count; ++i)
if (!recs.contains(i)) missed << i;
piCout << "errors" << errors;
piCout << "missed" << missed;
/*PIDataTransfer tr0, tr1;
CONNECTL(&tr0, receiveFinished, ([&](bool ok){
PIByteArray ba = tr0.data();
uint cnt = *(uint*)(ba.data());
piCout << "rec " << cnt << ok << ba.size_s();
}));
CONNECTL(&tr1, sendRequest, ([&](PIByteArray & data){tr0.received(data);}));
CONNECTL(&tr0, sendRequest, ([&](PIByteArray & data){tr1.received(data);}));
int count = 10;
for (int i = 0; i < count; ++i) {
PIByteArray msg;
msg << (uint)i;
msg.enlarge(randomi() % 3800 + 4000);
//sends[i] = msg.size_s();
piCout << "send" << i << msg.size_s();
tr1.send(msg);
//piMSleep(100);
}*/
return 0;
const int iters = 4;
const int sz = 10000000;
// {
// piCout << "PIVector push back";
// PIVector<int> v;
// //v.reserve(sz);
// for (int n=0; n<iters; ++n) {
// PITimeMeasurer tm;
// for (int i=0; i<sz; ++i) {
// v.push_back(i);
// }
// piCout << tm.elapsed_m() << v.capacity();
// v.clear();
// }
// }
// piCout << "\n";
// {
// piCout << "PIVector push front";
// PIVector<int> v;
// v.reserve(sz);
// for (int n=0; n<iters; ++n) {
// PITimeMeasurer tm;
// for (int i=0; i<sz; ++i) {
// v.push_front(i);
// }
// piCout << tm.elapsed_m() << v.capacity();
// v.clear();
// }
// }
// piCout << "\n";
// {
// piCout << "PIVector insert center";
// PIVector<int> v;
// //v.reserve(sz);
// for (int n=0; n<iters; ++n) {
// PITimeMeasurer tm;
// for (int i=0; i<sz; ++i) {
// v.insert(v.size()/2, i);
// }
// piCout << tm.elapsed_m();
// v.clear();
// }
// }
// piCout << "\n";
// {
// piCout << "PIDeque push back";
// PIDeque<int> v;
// //v.reserve(sz);
// for (int n=0; n<iters; ++n) {
// PITimeMeasurer tm;
// for (int i=0; i<sz; ++i) {
// v.push_back(i);
// }
// piCout << tm.elapsed_m() << v.capacity();
// v.clear();
// }
// }
// piCout << "\n";
// {
// piCout << "PIDeque push front";
// PIDeque<int> v;
// //v.reserve(sz);
// for (int n=0; n<iters; ++n) {
// PITimeMeasurer tm;
// for (int i=0; i<sz; ++i) {
// v.push_front(i);
// }
// piCout << tm.elapsed_m() << v.capacity();
// v.clear();
// }
// }
// piCout << "\n";
// {
// piCout << "PIDeque insert center";
// PIDeque<int> v;
// //v.reserve(sz);
// for (int n=0; n<iters; ++n) {
// PITimeMeasurer tm;
// for (int i=0; i<sz; ++i) {
// v.insert(v.size()/2, i);
// }
// piCout << tm.elapsed_m() << v.capacity();
// v.clear();
// }
// }
PIVector<llong> ind;
for (int i=0; i<sz; ++i) {
ind << randomi();
}
piCout << "\n";
{
piCout << "PIMap insert back";
PIMap<llong, int> v;
//v.reserve(sz);
for (int n=0; n<iters; ++n) {
PITimeMeasurer tm;
for (int i=0; i<sz; ++i) {
v[i] = i;
}
piCout << tm.elapsed_m();
v.clear();
}
}
piCout << "\n";
{
piCout << "PIMap insert front";
PIMap<llong, int> v;
//v.reserve(sz);
for (int n=0; n<iters; ++n) {
PITimeMeasurer tm;
for (int i=0; i<sz; ++i) {
v[sz - i] = i;
}
piCout << tm.elapsed_m();
v.clear();
}
}
piCout << "\n";
{
piCout << "PIMap insert random";
PIMap<llong, int> v;
//v.reserve(sz);
for (int n=0; n<iters; ++n) {
PITimeMeasurer tm;
for (int i=0; i<sz; ++i) {
v[ind[i]] = i;
}
piCout << tm.elapsed_m();
v.clear();
}
}
// piCout << "\n";
// {
// piCout << "Multi insert";
// PIVector<int> v;
// PIDeque<int> v2;
// //v.reserve(sz);
// for (int n=0; n<iters; ++n) {
// PITimeMeasurer tm;
// for (int i=0; i<sz; ++i) {
// v << i;
// v2 << v[i];
// }
// piCout << tm.elapsed_m();
// v.clear();
// }
// }
// piCout << "\n";
// {
// piCout << "Multi insert 2";
// PIVector<int> v;
// PIDeque<PIPair<int,int>> v2;
// //v.reserve(sz);
// for (int n=0; n<iters; ++n) {
// PITimeMeasurer tm;
// for (int i=0; i<sz; ++i) v << i;
// for (int i=0; i<sz; ++i) v2 << PIPair<int,int>(i, v[i]);
// piCout << tm.elapsed_m();
// v.clear();
// v2.clear();
// }
// }
return 0;
}