gpt4 book ai didi

c++ - 使用 ' ios::sync_with_stdio(0)' 测试运行时差异时,为什么我的输出是零散的?

转载 作者:行者123 更新时间:2023-11-27 23:51:59 26 4
gpt4 key购买 nike

  clock_t tStart = clock();
ios::sync_with_stdio(0);
cin.tie(0);
for(int i=0;i<100000;++i) cout<<i;
printf("\n\n\n\nTime taken: %.2fs\n", (double)(clock() - tStart)/CLOCKS_PER_SEC);
cout<<endl;

将此程序与 cout 一起使用可在 4.05 秒内运行,但即使在执行最后一行后也会输出一些数字。详情如下:

Time taken: 4.30s
99924999259992699927999289992999930999319993299933999349993599936999379993899939999409994199942999439994499945999469994799948999499995099951999529995399954999559995699957999589995999960999619996299963999649996599966999679996899969999709997199972999739997499975999769997799978999799998099981999829998399984999859998699987999889998999990999919999299993999949999599996999979999899999

使用 printf 程序按预期运行但非常慢(51 秒)。我在打印时间后使用 endl 也刷新了输出缓冲区。这是什么原因?

最佳答案

好吧,您不再将 C stdio(printf 使用)与 C++ 流 I/O(std::cout 使用)同步。这意味着它们有不同的缓冲区,可以在不同的时间刷新(并写入控制台)。

尝试添加 std::cout << std::flushprintf 之前称呼。或者更好的是,使用 std::cout对于最后的输出也是如此。

关于c++ - 使用 ' ios::sync_with_stdio(0)' 测试运行时差异时,为什么我的输出是零散的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45692112/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com