gpt4 book ai didi

c++ - cout << Boost::posix_time 的奇怪行为

转载 作者:太空狗 更新时间:2023-10-29 21:50:53 24 4
gpt4 key购买 nike

我想计算完成一个循环所需的时间。

我做了类似的事情:

ptime before = second_clock::local_time(); //get current time
cout << "Started: "<< before << " ... processing ...";
while(foo) {
....
}
ptime after = second_clock::local_time(); // get Current time
cout << "Processing took" << after - before;

这将输出:Started: "some time"

然后我等待循环结束,然后才能看到“...正在处理...”

这是为什么呢?它应该首先计算整个文本,然后进入循环。

如果我将第一个 cout 更改为:

cout << "开始: "<<之前;

它甚至不显示循环结束前的时间。

这是我见过的最奇怪的事情……我对 boost 时间的理解似乎出了问题。

我也在我的代码中使用了 boost::threads,但是 worker 散布在循环中,所以我看不出这与这个问题有什么关系。

有人可以帮我吗?

最佳答案

ostream 包括 cout 使用缓冲区,这意味着实现可以等待,看看您是否会在实际操作之前发送更多数据。

要让 cout 更快地打印,请使用

std::cout << std::flush;

或使用 std::endl,相当于 "\n" 后接 std::flush

关于c++ - cout << Boost::posix_time 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5016905/

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