C++ C++;计算时间间隔

C++ C++;计算时间间隔,c++,unix,time,g++,clock,C++,Unix,Time,G++,Clock,我想计算程序中发生的某些事件之间的时间间隔(1/10秒)。因此,我使用clock功能满足以下需求: clock_t begin; clock_t now; clock_t diff; begin = clock(); while ( 1 ) { now = clock(); diff = now - begin; cout << diff / CLOCKS_PER_SEC <&l

我想计算程序中发生的某些事件之间的时间间隔(1/10秒)。因此,我使用
clock
功能满足以下需求:

    clock_t begin;
    clock_t now;
    clock_t diff;

    begin = clock();

    while ( 1 )
    {
        now = clock();
        diff = now - begin;
        cout << diff / CLOCKS_PER_SEC << "\n";
        //usleep ( 1000000 );
    };
时钟未开始;
现在开始计时;
时钟差;
开始=时钟();
而(1)
{
现在=时钟();
diff=现在-开始;

也许你得把它打成两倍

cout << (double)(diff / CLOCKS_PER_SEC) << "\n";

cout也许你得把它打成双精度

cout << (double)(diff / CLOCKS_PER_SEC) << "\n";

cout我打赌你打印到stdout的时间太多了,以至于旧的打印都被缓冲了。缓冲区在增长,控制台的输出跟不上你的紧密循环。通过添加睡眠,你可以让缓冲区有一段时间刷新和赶上。因此,即使在你的程序中使用了8秒,你的打印内容也会从8秒前开始


我建议将实际时间戳放在print语句中。查看时间戳是否明显滞后于实际时间。

我打赌您打印到stdout的时间太长,以至于旧的打印正在被缓冲。缓冲区正在增长,控制台的输出无法跟上您的紧循环。通过添加睡眠,您允许了buffer一些时间来刷新和赶上。所以,即使它进入你的程序8秒,你的打印材料从8秒前


我建议将实际时间戳放在print语句中。查看时间戳是否明显滞后于实际时间。

函数
clock()
返回程序的CPU时间。当您在
usleep()中被阻塞时
call,没有向您收取任何时间费用,这清楚地说明了为什么您的时间似乎从未增加。至于为什么您似乎要花8秒来收取一秒钟的费用——您的系统中还有其他事情在进行,消耗您希望消耗的CPU时间,但您必须共享处理器。
clock()
不能用于测量实时的通过。

函数
clock()
返回向程序收费的CPU时间量。当您在
usleep()中被阻塞时
call,没有向您收取任何时间费用,这清楚地说明了为什么您的时间似乎从未增加。至于为什么您似乎要花8秒来收取一秒钟的费用——您的系统中还有其他事情在进行,消耗您希望消耗的CPU时间,但您必须共享处理器。
clock()
不能用于测量实时的通过。

阅读
时间()函数。

阅读
时间()函数
函数。

如果您能够使用boost,请签出库。

如果您能够使用boost,请签出库。

-1这真的不重要。在一秒钟内,diff应该是>每秒时钟,整数除法将得到1。这是OP所期望的。-1这真的不重要。在一秒钟内,diff应该是Boo> CythStPiSeSEC和整数除法将得到1。这就是OP所期待的。谢谢!也许你可以建议最简单的方法来测量我的C++程序中的实时性。<代码>时间()(代码)>函数返回当前时间,表示为1970年1月1日UTC以来的秒数。<代码> GETTimeFay.()
让您以秒分辨率获得时间;请参阅。有一个使用它的示例。非常感谢您的回复!我知道时间,但我需要测量秒数,所以我将阅读关于天的时间,谢谢您的建议!@Kolyunya C++11具有通用时钟,包括一个su有高分辨率(<代码> STD::HythOrthPrimeStultCaleS/<代码>)。这可能是一个标准兼容的替代方案:<代码> GETTimeFoTe>代码>谢谢。也许你可以建议最简单的方法来测量我的C++程序中的实时性?<代码>时间()
函数返回当前时间,表示为UTC 1970年1月1日以来的秒数。
gettimeofday()
让您以秒分辨率获得时间;请参阅。有一个使用它的示例。非常感谢您的回复!我知道时间,但我需要测量秒数,所以我将阅读关于天的时间,谢谢您的建议!@Kolyunya C++11具有通用时钟,包括一个su要求具有高分辨率(
std::chrono::高分辨率时钟
)。这可能是
gettimeofday
的标准替代方案。最好在延迟回复帖子之前阅读其他回复,然后阅读关于它们的评论。最好在延迟回复帖子之前阅读其他回复,然后阅读关于它们的评论。