2013-07-29 103 views
3

我试图用计时测量由某些功能所花费的时间,所以我的代码如下所示:C++ 11计时:分配值time_point对象

#include <chrono> 
#include <iostream> 

using namespace std; 

void doSomething() 
{ 
    //code goes here 
} 

int main() 
{ 
    chrono::time_point<chrono::system_clock> start,end; 
    start=chrono::system_clock::now; 
    doSomething(); 
    end=chrono::system_clock::now; 
} 

所以,基本上,我是以下代码示例从cppreference

的问题是,我已经在两个start=chrono::system_clock::now以下错误和end=chrono::system_clock::now

error: no match for 'operator=' (operand types are 
'std::chrono::time_point<std::chrono::system_clock, 
std::chrono::duration<long long int, std::ratio<1ll, 1000000000ll> > >' 
and 'std::chrono::system_clock::time_point()noexcept (true) 
{aka std::chrono::time_point<std::chrono::system_clock, 
std::chrono::duration<long long int, std::ratio<1ll, 1000000000ll> > >()noexcept (true)}') 

我也试图改变chrono::time_point<chrono::system_clock> start,end;chrono::system_clock::time_point start,end;。该错误是几乎相同的:

error: no match for 'operator=' (operand types are 
'std::chrono::system_clock::time_point 
{aka std::chrono::time_point<std::chrono::system_clock, 
std::chrono::duration<long long int, std::ratio<1ll, 1000000000ll> > >}' 
and 'std::chrono::system_clock::time_point()noexcept (true) 
{aka std::chrono::time_point<std::chrono::system_clock, 
std::chrono::duration<long long int, std::ratio<1ll, 1000000000ll> > >()noexcept (true)}') 

我使用Qt 5.1.0(32位)使用MinGW 4.8 32位的编译器。我还必须在我的.pro文件中添加QMAKE_CXXFLAGS+=-std=c++11来为C++ 11支持添加编译器标志。

回答

4

system_clock::now

chrono::time_point<chrono::system_clock> start,end; 
    start=chrono::system_clock::now(); //<-- Fix 

doSomething(); 
    end=chrono::system_clock::now(); //<-- Fix 

计算使用经过的时间()

auto duration = end - start; 
    std::cout << chrono::duration <double, std::milli> (duration).count() 
      << " ms" << std::endl;