Профилирование времени стены для многопоточного применения

У меня есть два приложения: одно многопоточное, а другое полностью последовательное. Оба приложения выполняют одну и ту же задачу. Я пытаюсь рассчитать ускорение многопоточного приложения. Почему-то я получаю больше времени для многопоточного кода (147.19 us) по сравнению с последовательным (41 us). Есть ли другой способ для профилирования настенного времени?

#include "iostream"#include "ctime"#include "thread"#include "chrono"#include "iomanip"
#include <sys/time.h>

int deltaTime(struct timeval *tv1, struct timeval *tv2){
return ((tv2->tv_sec - tv1->tv_sec)*1000000)+ tv2->tv_usec - tv1->tv_usec;
}

void execute_for_wallTime(int wall_time)
{
struct timeval  tvStart, tvNow;
gettimeofday(&tvStart, NULL);

for (int m = 0; wall_time; ++m){
gettimeofday(&tvNow, NULL);
if(deltaTime(&tvStart,&tvNow) >=wall_time) {

return;
}
}
}

int sc_main(int argc, char* argv[])
{
std::clock_t c_start = std::clock();
auto t_start = std::chrono::high_resolution_clock::now();//multi-thread code

// std::thread t1(execute_for_wallTime, 10);
// std::thread t2(execute_for_wallTime, 13);
// std::thread t3(execute_for_wallTime, 16);
// t1.join();
// t2.join();
// t3.join();

//Sequential Code

execute_for_wallTime(10);
execute_for_wallTime(13);
execute_for_wallTime(16);

std::clock_t c_end = std::clock();
auto t_end = std::chrono::high_resolution_clock::now();
std::cout << std::fixed << std::setprecision(2) << "CPU time used: "<< 1000.0 * (c_end-c_start) / CLOCKS_PER_SEC << " ms\n"<< "Wall clock time passed: "<< std::chrono::duration<double, std::micro>(t_end-
t_start).count()
<< " us\n";

return 0;
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]