#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 "cycle.h" static const int N = 100000; static const size_t R = 7; void PrintStats(std::vector timings) { std::cout << std::fixed << std::setprecision(2); std::cout << "["; for (size_t i = 1 ; i= '0' && *p <= '9') { x = (x*10) + (*p - '0'); ++p; } if (neg) { x = -x; } return x; } int main() { std::vector nums; nums.reserve(N); for (int i=0-(N/2) ; i(i); nums.push_back(y); } { int tsum = 0; std::vector timings; timings.reserve(R); for (size_t r=0 ; r(nums[i]); tsum += x; } ticks end = getticks(); double timed = elapsed(end, start); timings.push_back(timed); } std::cout << "lexical_cast: "; PrintStats(timings); std::cout << std::endl; std::cout << tsum << std::endl; } { int tsum = 0; std::vector timings; timings.reserve(R); for (size_t r=0 ; r> x; tsum += x; } ticks end = getticks(); double timed = elapsed(end, start); timings.push_back(timed); } std::cout << "stringstream: "; PrintStats(timings); std::cout << std::endl; std::cout << tsum << std::endl; } { int tsum = 0; std::vector timings; timings.reserve(R); for (size_t r=0 ; r> x; tsum += x; } ticks end = getticks(); double timed = elapsed(end, start); timings.push_back(timed); } std::cout << "stringstream reused: "; PrintStats(timings); std::cout << std::endl; std::cout << tsum << std::endl; } { int tsum = 0; std::vector 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