我正在阅读“\n” or '\n' or std::endl to std::cout?
。尽管人们一致认为你选择的并不重要,但我决定构建一个可以测量每个程序执行速度的人为测试。这是我的简单程序:
#include <iostream>
int main()
{
for (std::size_t i = 0; i < ITERS; ++i)
{
#ifdef VER1
std::cout << "\n";
#endif
#ifdef VER2
std::cout << '\n';
#endif
#ifdef VER3
std::cout << std::endl;
#endif
}
}
使用十亿次迭代和-O3
并将输出重定向到/dev/null/
,这些是我的结果:
"\n"
0:30.96
'\n'
0:31.66
使用-O2
:
"\n"
0:32.96
'\n'
0:31.54
为什么更高的优化级别会使'\n'
更慢?
答案 0 :(得分:0)
通过此设置,您最有可能测量哪个测试运行发生在线程调度程序中断最长的时间。此外,我想你可能会在写入真实文件而不是/ dev / null时遇到非常不同的时间。