PIVector reshape and etc...
This commit is contained in:
249
main.cpp
249
main.cpp
@@ -1,241 +1,22 @@
|
||||
#include "pip.h"
|
||||
|
||||
|
||||
PIPeer p0("p0"), p1("p1");
|
||||
template <typename S, typename T, typename std::enable_if<
|
||||
std::is_same<T, PIVector<S>>::value
|
||||
, int>::type = 0> PIVector<S> rrr(PIVector<T>) {
|
||||
piCout << std::is_same<T, PIVector<S>>::value;
|
||||
return PIVector<S>();
|
||||
}
|
||||
|
||||
|
||||
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();
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
PIVector<int> x;
|
||||
x.resize(16, [](size_t i) {return i+1;});
|
||||
piCout << x;
|
||||
PIVector<PIVector<int>> m = x.reshape(4,4);
|
||||
piCout << m;
|
||||
PIVector<int> y;
|
||||
y = m.reshape<int>();
|
||||
piCout << y;
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user