2010-11-05 33 views
7

Vì vậy, tôi đọc boost docs nhưng tôi vẫn không thấy làm thế nào để làm điều đơn giản như vậyTăng giờ hẹn giờ: làm thế nào để có được thời gian khi tôi cần?

int main() { 
    //stuff 
    startTimer(); 
    // do stuff 
    int i =getTimerValue(); 
    //stuff 
} 

như vậy để có được thời gian thực hiện những thứ mà tôi đã thực hiện. Làm thế nào để làm điều đó?

+0

Tôi không chắc mình hiểu. Bạn muốn lấy lại thời gian trôi qua kể từ lần khởi động lại cuối cùng của bộ hẹn giờ? –

Trả lời

19

Sử dụng boost::timer

#include <boost/timer.hpp> 
int main() { 
    boost::timer t; // start timing 
    ... 
    double elapsed_time = t.elapsed(); 
    ... 
} 

Lưu ý rằng destuctor của một boost::progress_timer sẽ hiển thị thời gian. Vì vậy, sử dụng phạm vi nếu mục đích của bạn chỉ là để hiển thị thời gian trôi qua ở giữa một chức năng.

int main() { 
    { 
    boost::progress_timer t; // start timing 
    ... 
    } // elapsed time displayed here when t is destructed 
    ... 
} 
+0

Mặc dù đoạn mã đầu tiên của bạn trả lời câu hỏi, 'boost :: timer' không hiển thị thời gian đã trôi qua khi hủy vì vậy nửa câu trả lời của bạn không chính xác. Đối với điều này, bạn cần 'boost :: progress_timer' như mô tả của Steve bên dưới. Xem [docs] (http://www.boost.org/doc/libs/1_47_0/libs/timer/timer.htm) – Arth

+0

@Arth đã được sửa ... – log0

5

Thay thế này với

#include <boost/progress.hpp> 
void function() 
{ 
    progress_timer t; // start timing 
    // do stuff 
    return 0; 
} 

và bạn sẽ nhận được những gì bạn muốn, không sử dụng printf mặc dù.

Bộ tính giờ bắt đầu được xây dựng và hiển thị khi hủy (ví dụ: tại lối ra fn.). Đây là cách thực hiện RAII thông thường để thực hiện các tác vụ phạm vi (thời gian, khóa, v.v.) trong C++.

+0

thats quan điểm của tôi - để trả về giá trị thời gian không khi chức năng kết thúc, không hiển thị giá trị thời gian cho đến khi một phần của chức năng ngừng hoạt động. – Rella

+0

@Kabumbus: Trong trường hợp đó, sử dụng ''. –

0

Ngoài ra còn có ý tưởng sau dựa trên tính năng được đề cập là thời gian trôi qua được hiển thị bởi destructor.

#include "boost/timer/timer.hpp" 
int main() 
{ 
    // ... 
    boost::timer:auto_cpu_timer *boost_timer = new boost::timer:auto_cpu_timer(); 
    // we want to measure the time of execution of this part of code 
    // ... 
    delete boost_timer; // show the elapsed time 
    // then we can repeat 
    boost_timer = new boost::timer:auto_cpu_timer(); 
    // ... 
    delete boost_timer; 
    // ... 
} 
Các vấn đề liên quan