Здравствуйте, rg45, Вы писали:
А>>Какой функцией можно заполучить время? Нужно для замера времени работы участка кода.
R>Способ, позволяющий мерять время в тактах процессора (x86): rdtsc.
Написал заметку в вики по этому поводу:
http://wk.rsdn.ru/code-timing.ashx
Какой функцией можно заполучить время? Нужно для замера времени работы участка кода.
Расчет ведется на четырех ядрах. Внешне при выборе 4-х ядер скорость расчетов выше чем при одном. Хотел, так для интереса, посмотреть во сколько раз скорость увеличивается и обнаружил что при использовании 4-х ядер время dt такоеже как и при 1-м. Может clock() возвращает не совсем время?
#include <time.h>
...
omp_set_dynamic(0);
omp_set_num_threads(4);
...
//start_block
size_t i,j;
clock_t clock(void);
int time1 = clock();
#pragma omp parallel for ...
for(i=0; i<n; ++i){
// код идеально расспараллеливающийся
}
int time2 = clock();
std::cout << "[dt="<< time2-time1 << ']' << std::flush;
}//end_block
Здравствуйте, Аноним, Вы писали:
А>Какой функцией можно заполучить время? Нужно для замера времени работы участка кода.
Способ, позволяющий мерять время в тактах процессора (x86):
rdtsc.
int lo, hi;
__asm
{
rdtsc
mov lo, eax
mov hi, edx
}
Здравствуйте, rg45, Вы писали:
R>Здравствуйте, Аноним, Вы писали:
А>>Какой функцией можно заполучить время? Нужно для замера времени работы участка кода.
R>Способ, позволяющий мерять время в тактах процессора (x86): rdtsc.
R>R> int lo, hi;
R> __asm
R> {
R> rdtsc
R> mov lo, eax
R> mov hi, edx
R> }
R>
похоже процесорное время я и померил, а нужно мерить реальное время.