Pierwsza sprawa, to paczka w Ubuntu (libboost-all-dev), która ciągle wskazuje na wersję 1.46, a tam Boost.Chrono brakuje. Musiałem, wymienić to na:
apt-get install libboost1.48-all-devDruga spraw, to linkowanie. Chrono, korzysta z Boost.System i obie biblioteki trzeba zlinkować z programem (tu mam wątpliwości czy istnieje wersja, której nie trzeba linkować - nie doczytałem, korzystam z tego co mam w paczkach Ubuntu).
Zmiany w CMakeList.txt dla mojego projektu
project(benchmark_container_iterator) cmake_minimum_required(VERSION 2.8) aux_source_directory(. SRC_LIST) add_executable(${PROJECT_NAME} ${SRC_LIST}) find_package(Boost COMPONENTS system chrono REQUIRED) target_link_libraries(${PROJECT_NAME} ${Boost_SYSTEM_LIBRARY} ${Boost_CHRONO_LIBRARY} )Dla benchmarka chciałem użyć process_cpu_clock, ale jego precyzja była do kitu. Jednak według opisu, wydaje się tym czego szukam:
Process and thread clocks are used usually to measure the time spent by code blocks, as a basic time-spent profiling of different blocks of code (Boost.Stopwatch is a clear example of this use).Ostatecznie padło na "steady_clock"
Zasada działania, jest podobna jak w wersji poprzedniej. To bardzo proste wykorzystanie możliwości tej biblioteki.
#include <list> #include <iostream> #include <boost/foreach.hpp> #include <boost/assign/list_of.hpp> #include <boost/chrono.hpp> using namespace std; using namespace boost::assign; int main() { using namespace boost::chrono; steady_clock::time_point time1 = steady_clock::now(); cout << "Start at: " << time1 << endl; const int size = 400500; list<int> l = list_of(1337).repeat(size, 1337); steady_clock::time_point time2 = steady_clock::now(); nanoseconds td_init = duration_cast<nanoseconds>(time2 - time1); cout << "Memory Initialization: " << td_init << endl; int result = 0; BOOST_FOREACH(int value, l) { if (value > result) result = value; } steady_clock::time_point time3 = steady_clock::now(); nanoseconds td_find = duration_cast<nanoseconds>(time3 - time2); cout << "Searching: " << td_find << endl; return result; }Wyniki:
Start at: 14714172071593 nanoseconds since boot Memory Initialization: 128273372 nanoseconds Searching: 29473710 nanoseconds
Brak komentarzy:
Prześlij komentarz