对换行符和std :: endl进行基准测试

时间:2014-10-10 00:24:27

标签: c++

我正在阅读“\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' 更慢

1 个答案:

答案 0 :(得分:0)

通过此设置,您最有可能测量哪个测试运行发生在线程调度程序中断最长的时间。此外,我想你可能会在写入真实文件而不是/ dev / null时遇到非常不同的时间。