270 lines
5.6 KiB
C++
270 lines
5.6 KiB
C++
#include "pip.h"
|
|
|
|
|
|
//PIPeer p0("p0"), p1("p1");
|
|
|
|
int main() {
|
|
PIByteArray ba, bd, ext;
|
|
bd.resize(4096);
|
|
for (int i = 0; i < bd.size_s(); ++i) bd[i] = rand() % 256;
|
|
uint hash = bd.hash();
|
|
piCout << hash;
|
|
{
|
|
PIChunkStream cs;
|
|
cs.add(1, PIString("string")).add(3, 123456).add(2, PIString("!!-second-!!"));
|
|
ba = cs.data();
|
|
}
|
|
//piCout << ba.toHex();
|
|
{
|
|
PIChunkStream cs(ba);
|
|
cs.readAll();
|
|
PIString s1, s2; int i = 0;
|
|
cs.get(1, s1).get(3, i).get(2, s2);
|
|
piCout << s1 << s2 << i;
|
|
cs.set(3, PIString("WHATSAP!"));
|
|
cs.set(1, bd);
|
|
ba = cs.data();
|
|
}
|
|
//piCout << ba.toHex();
|
|
{
|
|
PIChunkStream cs(ba);
|
|
cs.readAll();
|
|
PIString s1, s2, s3;
|
|
cs.get(1, ext).get(2, s2).get(3, s3);
|
|
piCout << ext.hash() << s2 << s3;
|
|
}
|
|
/*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;
|
|
}
|