16 for(VecEllapsedTime::const_iterator it(vecTime.begin()); it != vecTime.end(); ++it){
17 MapOrderedTime::iterator itFindTime = mapOrderTime.find(*it);
18 if(itFindTime != mapOrderTime.end()){
19 itFindTime->second += 1lu;
21 mapOrderTime[*it] = 1lu;
33 double sumValue(0.0), sumSquare(0.0);
35 for(MapOrderedTime::const_iterator it(mapOrderTime.begin()); it != mapOrderTime.end() && nbValue < nbValueToBeUsed; ++it){
36 double val(it->first);
38 sumValue += val*((double)it->second);
39 sumSquare += val*val*((double)it->second);
40 nbValue += it->second;
42 ellapsedTimeNs = sumValue/((double)nbValue);
43 double meanSquare(sumSquare/((
double)nbValue));
44 ellapsedTimeErrorNs = std::sqrt(meanSquare - ellapsedTimeNs*ellapsedTimeNs);
49 std::cout <<
"micro_benchmarkParseArg : expect only a list of INT such as: \"1000,2000,3000,4000\"" << std::endl;
58 std::string::const_iterator it = str.begin();
59 while(it != str.end()){
60 if(*it == ch)
return true;
71std::vector<std::string>
cutStringOnChars(
const std::string & strIn,
const std::string & setChars){
72 std::vector<std::string> vecOut;
73 std::string strTmp(
"");
74 for(std::string::const_iterator it(strIn.begin()); it != strIn.end(); ++it){
76 if(strTmp !=
""){vecOut.push_back(strTmp);}
82 if(strTmp !=
""){vecOut.push_back(strTmp);}
98 std::string argument(argv[1]);
99 if(argument ==
"--help" || argument ==
"-h"){
104 for(std::vector<std::string>::iterator it(vecSize.begin()); it != vecSize.end(); ++it){
105 std::stringstream converterStr(*it);
106 size_t nbElement(0lu);
107 converterStr >> nbElement;
115 std::cout <<
"micro_benchmarkParseArg2d : expect only two list of INT such as: \"1000,2000,3000,4000\"" << std::endl;
130 std::string argumentX(argv[1]), argumentY(argv[2]);
134 if(vecSizeX.size() != vecSizeY.size()){
135 std::cerr <<
"Vector X and Y must ave the same size vecSizeX("<<vecSizeX.size()<<
") != vecSizeY("<<vecSizeY.size()<<
")" << std::endl;
136 std::cout <<
"Vector X and Y must ave the same size vecSizeX("<<vecSizeX.size()<<
") != vecSizeY("<<vecSizeY.size()<<
")" << std::endl;
139 for(std::vector<std::string>::iterator itX(vecSizeX.begin()); itX != vecSizeX.end(); ++itX){
140 std::stringstream converterStrX(*itX);
141 size_t nbElementX(0lu);
142 converterStrX >> nbElementX;
143 std::cout <<
"\t" << nbElementX;
145 std::cout << std::endl;
147 for(std::vector<std::string>::iterator itY(vecSizeY.begin()); itY != vecSizeY.end(); ++itY){
148 std::stringstream converterStrY(*itY);
149 size_t nbElementY(0lu);
150 converterStrY >> nbElementY;
151 std::cout << nbElementY;
152 for(std::vector<std::string>::iterator itX(vecSizeX.begin()); itX != vecSizeX.end(); ++itX){
153 std::stringstream converterStrX(*itX);
154 size_t nbElementX(0lu);
155 converterStrX >> nbElementX;
156 double res = evalFunc(nbElementX, nbElementY);
157 std::cerr << nbElementX <<
"\t" << nbElementY <<
"\t" << res << std::endl;
158 std::cout <<
"\t" << res;
160 std::cerr << std::endl;
161 std::cout << std::endl;
void micro_benchmarkHelpFunction()
Help function of the micro benchmarking program argument parse.
void micro_benchmarkVecToMap(MapOrderedTime &mapOrderTime, const VecEllapsedTime &vecTime)
Fill the map of ordered time with the vector.
int micro_benchmarkParseArg(int argc, char **argv, EvaluateTimeFct evalFunc)
Call the evalFunc by respect to the arguments given to the program.
int micro_benchmarkParseArg2d(int argc, char **argv, EvaluateTimeFct2d evalFunc)
Call the evalFunc by respect to the arguments given to the program.
bool findCharInString(const std::string &str, char ch)
Tells if a chararacter is in a string.
void micro_benchmarkComputeTime(double &ellapsedTimeNs, double &ellapsedTimeErrorNs, const MapOrderedTime &mapOrderTime, size_t nbValueToBeUsed)
Compute the total computing time and associated error with the given data.
std::vector< std::string > cutStringOnChars(const std::string &strIn, const std::string &setChars)
Cut a string on determined chars.
void micro_benchmarkHelpFunction2d()
Help function of the micro benchmarking program argument parse.
std::map< double, size_t > MapOrderedTime
Map of the ordered ellapsed time.
double(& EvaluateTimeFct2d)(size_t, size_t)
std::vector< double > VecEllapsedTime
Vector of ellapsed time measurement.
void(& EvaluateTimeFct)(size_t)
#define PIN_THREAD_TO_CORE