关于代码产生系统时间的输出问题


#include <iostream>
#include <cstdio>
#include <sysKpes.h>
#include <unistd.h>
#include <time.h>
using namespace std;
int main()
{   
    time_t now;
    tm * timenow;
    while(true){
        time(&now);
        timenow = localtime(&now);
        cout<<"Those output come from child,"<<asctime(timenow)<<endl;
    }
}
#include <stdio.h> 
#include <time.h>
int main()
{   
    time_t now;
    while(1)
    {
        time(&now);
        
        time_t timeValue = 0;
        char *str = NULL;
    
        timeValue = time(NULL);
        str = ctime(&timeValue);
        printf("Those output come from child,%s\n",str);  
    }
    return 0;
}

为什么这个的C语言代码输出系统时间有点慢啊?c++的输出系统时间就很快,C语言的这个代码怎么样才能让它输出快点啊?

不是时间问题,是cout和printf的区别
而且不是你表面看的printf慢,其实不然,printf还快些。
我们可以做一个测试。就循环1000次,打印时间。
经过测试,发现while循环1000次,printf只打印一个时间比如时间是2:23:2,而cout打印了两个时间2:23:2和2:23:3。
这说明cout花了至少1s多才打印了1000条,而printf只用了可能1s不到就打印了1000条。
这就是为什么你看到cout的时间好像一直不动,很久才到下一秒一样。

#include <iostream>
#include <cstdio>
#include <time.h>
using namespace std;
int main()
{
    time_t now;
    tm * timenow;
    int t = 0;
    while (t<1000) {
        time(&now);
        timenow = localtime(&now);
        cout << t<<"Those output come from child," << asctime(timenow) << endl;
        t++;
    }

    return 0;
}
#include <stdio.h> 
#include <time.h>
int main()
{
    time_t now;
    int t = 0;
    while (t<1000)
    {
        time(&now);

        time_t timeValue = 0;
        char *str = NULL;

        timeValue = time(NULL);
        str = ctime(&timeValue);
        printf("%dThose output come from child,%s\n", t,str);
        t++;
    }
    return 0;
}