#ifdef _MSC_VER #define _SECURE_SCL 0 #define _CRT_SECURE_NO_DEPRECATE 1 #define WIN32_LEAN_AND_MEAN #define VC_EXTRALEAN #define NOMINMAX #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "cycle.h" #ifdef _MSC_VER #define snprintf _snprintf #endif static const int N = 100000; static const size_t R = 7; void PrintStats(std::vector timings) { double fastest = std::numeric_limits::max(); std::cout << std::fixed << std::setprecision(2); std::cout << "["; for (size_t i = 1 ; i timings; timings.reserve(R); for (size_t r=0 ; r timings; timings.reserve(R); for (size_t r=0 ; r timings; timings.reserve(R); for (size_t r=0 ; r timings; timings.reserve(R); for (size_t r=0 ; r timings; timings.reserve(R); for (size_t r=0 ; r timings; timings.reserve(R); for (size_t r=0 ; r timings; timings.reserve(R); for (size_t r=0 ; r timings; timings.reserve(R); for (size_t r=0 ; r timings; timings.reserve(R); for (size_t r=0 ; r timings; timings.reserve(R); for (size_t r=0 ; r> y; tlen += y.length(); } ticks end = getticks(); double timed = elapsed(end, start); timings.push_back(timed); } std::cout << "strstream (new stream, reuse string): "; PrintStats(timings); std::cout << std::endl; std::cout << tlen << std::endl; } { size_t tlen = 0; std::vector timings; timings.reserve(R); for (size_t r=0 ; r timings; timings.reserve(R); for (size_t r=0 ; r(i); tlen += y.length(); } ticks end = getticks(); double timed = elapsed(end, start); timings.push_back(timed); } std::cout << "lexical_cast (reuse string): "; PrintStats(timings); std::cout << std::endl; std::cout << tlen << std::endl; } { size_t tlen = 0; std::vector timings; timings.reserve(R); for (size_t r=0 ; r(i); tlen += y.length(); } ticks end = getticks(); double timed = elapsed(end, start); timings.push_back(timed); } std::cout << "lexical_cast (new string): "; PrintStats(timings); std::cout << std::endl; std::cout << tlen << std::endl; } { using namespace boost::spirit; using boost::spirit::karma::generate; size_t tlen = 0; std::vector timings; timings.reserve(R); for (size_t r=0 ; r timings; timings.reserve(R); for (size_t r=0 ; r