C++ std::copy的输出速度是否比std::cout快? std::向量v{2,4,6,8,10,12,14,16,18,20}; //打印数字 std::copy(v.cbegin(),v.cend(),std::ostream_迭代器(std::cout,“”); std::cout

C++ std::copy的输出速度是否比std::cout快? std::向量v{2,4,6,8,10,12,14,16,18,20}; //打印数字 std::copy(v.cbegin(),v.cend(),std::ostream_迭代器(std::cout,“”); std::cout,c++,buffer,C++,Buffer,要大致了解两者的相对性能,请参见此处的基准测试结果: 我必须输出到std::stringstream,而不是std::cout,才能让quick bench满意。它提供了一些关于底层实现的原始性能的见解,但没有提供关于它们如何与高度依赖操作系统的输出流(如std::cout)交互的见解 因此,仅基于这样一个简单的基准,很难得出任何明确的结论。从这一点我可以看出,实际上,从性能角度来看,这两种方法之间很可能没有足够的差异,因此更倾向于选择其中一种方法。您以前是否尝试过对其进行分析?我想你自己很容易

要大致了解两者的相对性能,请参见此处的基准测试结果:

我必须输出到
std::stringstream
,而不是
std::cout
,才能让quick bench满意。它提供了一些关于底层实现的原始性能的见解,但没有提供关于它们如何与高度依赖操作系统的输出流(如
std::cout
)交互的见解


因此,仅基于这样一个简单的基准,很难得出任何明确的结论。从这一点我可以看出,实际上,从性能角度来看,这两种方法之间很可能没有足够的差异,因此更倾向于选择其中一种方法。

您以前是否尝试过对其进行分析?我想你自己很容易就能找到答案:)我不确定。我需要知道他们的工作方式是否不同;如果是这样的话,怎么做?你可以看看创建的汇编代码,如果你想知道,它们是如何工作的,这表明你可以如何测量它。很肯定,瓶颈将是控制台本身,所以如果有差异,它们很可能是可以忽略的。。。
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';
for(auto element: v) std::cout << element << " ";