是std :: copy比std :: cout更快的输出?

时间:2019-10-30 08:35:14

标签: c++ buffer

std::vector<int> v{2,4,6,8,10,12,14,16,18,20};

// print the numbers
    std::copy(v.cbegin(), v.cend(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << '\n';

此处std :: copy用于写入标准输出。这比对for循环中的矢量元素使用std :: cout更快

for(auto element: v) std::cout << element << " ";

我找不到太多有关它们如何写入两者的输出缓冲区的信息。

1 个答案:

答案 0 :(得分:2)

要大致了解两者的相对性能,请点击此处查看基准测试结果:http://quick-bench.com/wGYYPBXEgvLrkyp5gpJOnIpt7A4

我必须输出到std::stringstream而不是std::cout才能保持快速入门。它提供了有关基础实现的原始性能的一些见解,但没有提供有关它们如何与高度依赖于操作系统的输出流(例如std::cout)交叉影响的信息。

因此,仅凭如此简单的基准很难得出任何明确的结论。因此,从性能的角度来看,两种方法之间实际上并没有太大的差异来偏爱一种方法。