2013-07-29 40 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;