2015-01-08 51 views
0

我不确定这是否为真,但在我的代码中,我打印的是一个名为currentTime的变量的值,它记录了秒数自应用程序运行。当前时间变量记录为 time(NULL) - epocTime 其中epocTime在代码开始时设置为时间(NULL)。 即使currentTime是double类型,它会在我的应用程序运行时输出为1.0000,2.0000,3.0000等等。但它从来没有非整数值。是否有可能改变我记录时间的方式,以便毫秒也被记录下来,例如有一个参数可以让time()方法记录毫秒。C++中的时间(NULL)只计算秒数,而不是毫秒

+5

http://en.cppreference.com/w/cpp/chrono – Cthulhu

+1

'时间()'给你的整数。不管你分配什么,并将其转换为。它不能神奇地获得微秒的分辨率。 –

回答

1

time()几乎总是返回一个整数类型,其中包含自1970年1月1日以来的秒数。使用time()本身可以做的事情本身并没有太多可以改变这一点。

相反,你应该看看std::chrono::steady_clock

#include <chrono> 
#include <thread> 
#include <iostream> 

int main() { 
    auto start = std::chrono::steady_clock::now(); 

    // Some work 
    std::this_thread::sleep_for(std::chrono::seconds(1)); 

    auto end = std::chrono::steady_clock::now(); 
    auto elapsed = end - start; 

    std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(elapsed).count() << " milliseconds\n"; 
} 
+1

_“不多”_或者实际上什么也没有。 [你的'std :: clock'建议简直是错误的](http://kera.name/articles/2011/03/tomalaks-tuesday-tip-11-sleep-your-way-to-success/)。 –

+1

@LightnessRacesinOrbit:我总是忘记哪些旧时钟会返回挂墙时间或CPU时间,以及在您的进程切换进程时它们是否失败。所以让我们删除答案的那部分。不过谢谢你们的联系,而且这些日子我可能会把它记录下来。 –