Commit 3309f6f5 authored by Ulysse Beaugnon's avatar Ulysse Beaugnon

The results are now directly flushed to the disc so, if a simulation is taking...

The results are now directly flushed to the disc so, if a simulation is taking too long, we can stop it and restart where we are
parent 2776b12a
// To compile : g++ -std=c++0x results.cpp graph.cpp main.cpp -lpthread // To compile : g++ -std=c++0x results.cpp graph.cpp main.cpp -lpthread
#include "main.h" #include "main.h"
#include <fstream>
#include <future> #include <future>
#include <sstream> #include <sstream>
...@@ -33,12 +32,12 @@ int main(int argc, char** argv) ...@@ -33,12 +32,12 @@ int main(int argc, char** argv)
{ {
mt19937 rng(time(NULL)); mt19937 rng(time(NULL));
fstream output(outName, fstream::out); FILE* output = fopen(outName, "wt");
output << "n,k,maxPeer,avgDistance,disconnected,disconnectionProba,maxDistance,maxArityDistrib" << endl; int fno = fileno(output);
fprintf(output, "n,k,maxPeer,avgDistance,disconnected,disconnectionProba,maxDistance,maxArityDistrib\n");
vector<future<string>> outputStrings; vector<future<string>> outputStrings;
for(int n=200; n<=200; n*=2) for(int n=200; n<=20000; n*=2)
for(int k=10; k<=10; k+=5) for(int k=10; k<=10; k+=5)
for(float a=0.05; a<1; a+=0.05) for(float a=0.05; a<1; a+=0.05)
{ {
...@@ -48,8 +47,8 @@ int main(int argc, char** argv) ...@@ -48,8 +47,8 @@ int main(int argc, char** argv)
ostringstream out; ostringstream out;
out << n << "," << k << "," << 3*k << "," << results.avgDistance << "," out << n << "," << k << "," << 3*k << "," << results.avgDistance << ","
<< results.disconnected << "," << results.disconnectionProba << "," << results.disconnected << "," << results.disconnectionProba << ","
<< results.maxDistanceReached << "," << results.arityDistrib[3*k]; << results.maxDistanceReached << "," << results.arityDistrib[3*k]
<< endl;
return out.str(); return out.str();
})); }));
} }
...@@ -59,13 +58,16 @@ int main(int argc, char** argv) ...@@ -59,13 +58,16 @@ int main(int argc, char** argv)
int nTask = outputStrings.size(); int nTask = outputStrings.size();
for(int i=0; i<nTask; i++) for(int i=0; i<nTask; i++)
{ {
output << outputStrings[i].get() << endl; fprintf(output, outputStrings[i].get().c_str());
fflush(output);
fsync(fno);
cout << "\r" << i+1 << "/" << nTask; cout << "\r" << i+1 << "/" << nTask;
cout.flush(); cout.flush();
} }
cout << endl; cout << endl;
output.close(); fclose(output);
return 0; return 0;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment