#include "../../jlib/base/logstream.h" #include "../../jlib/base/timestamp.h" #include using namespace jlib; const size_t N = 1000000; template void benchPrintf(const char* fmt) { char buf[32]; Timestamp start(nowTimestamp()); for (size_t i = 0; i < N; ++i) snprintf(buf, sizeof buf, fmt, (T)(i)); Timestamp end(nowTimestamp()); printf("benchPrintf %s\n", format("%S", (end - start)).c_str()); } template void benchStringStream() { Timestamp start(nowTimestamp()); std::ostringstream os; for (size_t i = 0; i < N; ++i) { os << (T)(i); os.seekp(0, std::ios_base::beg); } Timestamp end(nowTimestamp()); printf("benchStringStream %s\n", format("%S", (end - start)).c_str()); } template void benchLogStream() { Timestamp start(nowTimestamp()); LogStream os; for (size_t i = 0; i < N; ++i) { os << (T)(i); os.resetBuffer(); } Timestamp end(nowTimestamp()); printf("benchLogStream %s\n", format("%S", (end - start)).c_str()); } int main() { benchPrintf("%d"); puts("int"); benchPrintf("%d"); benchStringStream(); benchLogStream(); puts("double"); benchPrintf("%.12g"); benchStringStream(); benchLogStream(); puts("int64_t"); benchPrintf("%" PRId64); benchStringStream(); benchLogStream(); puts("void*"); benchPrintf("%p"); benchStringStream(); benchLogStream(); }