C++;在多线程实验设置中计算进程的精确CPU时间 我正在Ubuntu 6核心机上运行C++算法的测试。我希望,对于每个测试,只测量该测试进程所需的确切CPU时间,而不是在同一台机器上运行的其他测试或计算机进程所需的CPU时间。为此,我目前正在使用这个类: #include <time.h> #include <sys/times.h> #include <iostream> struct stopwatch { clock_t tstart; clock_t tprevlap; clock_t tlap; tms ustart; tms uprevlap; tms ulap; unsigned int clk_tk; stopwatch() : tstart(clock()), // clock() tprevlap(tstart), tlap(tstart), ustart(), uprevlap(), ulap(), clk_tk(sysconf(_SC_CLK_TCK)) { times(&ustart); std::copy(&ustart, &ustart + 1, &uprevlap); std::copy(&ustart, &ustart + 1, &ulap); }; void lap() { std::copy(&ulap, &ulap + 1, &uprevlap); tprevlap = tlap; times(&ulap); tlap = clock(); } double partial_user_time() { return ((double)ulap.tms_utime-ustart.tms_utime)/clk_tk; } double lap_user_time() { return ((double)(ulap.tms_utime-uprevlap.tms_utime))/clk_tk; } }; #包括 #包括 #包括 结构秒表 { 时钟启动; 钟摆; 时钟tlap; tms-ustart; tms-uprevlap; tms-ulap; 无符号整数时钟; 秒表(): tstart(clock()),//clock() tprevlap(tstart), tlap(tstart), ustart(), uprevlap(), ulap(), clk_tk(sysconf(_SC_clk_TCK)) { 泰晤士报(美国报),; 标准::副本(&ustart,&ustart+1,&uprevlap); std::复制(&ustart,&ustart+1,&ulap); }; 空圈() { 标准:复制(&ulap,&ulap+1,&uprevlap); tprevlap=tlap; 泰晤士报(&ulap); tlap=时钟(); } 双部分用户时间() { 返回((双)ulap.tms_utime-ustart.tms_utime)/clk_tk; } 双圈用户时间() { 返回((双精度)(ulap.tms_utime-uprevlap.tms_utime))/clk_tk; } };

C++;在多线程实验设置中计算进程的精确CPU时间 我正在Ubuntu 6核心机上运行C++算法的测试。我希望,对于每个测试,只测量该测试进程所需的确切CPU时间,而不是在同一台机器上运行的其他测试或计算机进程所需的CPU时间。为此,我目前正在使用这个类: #include <time.h> #include <sys/times.h> #include <iostream> struct stopwatch { clock_t tstart; clock_t tprevlap; clock_t tlap; tms ustart; tms uprevlap; tms ulap; unsigned int clk_tk; stopwatch() : tstart(clock()), // clock() tprevlap(tstart), tlap(tstart), ustart(), uprevlap(), ulap(), clk_tk(sysconf(_SC_CLK_TCK)) { times(&ustart); std::copy(&ustart, &ustart + 1, &uprevlap); std::copy(&ustart, &ustart + 1, &ulap); }; void lap() { std::copy(&ulap, &ulap + 1, &uprevlap); tprevlap = tlap; times(&ulap); tlap = clock(); } double partial_user_time() { return ((double)ulap.tms_utime-ustart.tms_utime)/clk_tk; } double lap_user_time() { return ((double)(ulap.tms_utime-uprevlap.tms_utime))/clk_tk; } }; #包括 #包括 #包括 结构秒表 { 时钟启动; 钟摆; 时钟tlap; tms-ustart; tms-uprevlap; tms-ulap; 无符号整数时钟; 秒表(): tstart(clock()),//clock() tprevlap(tstart), tlap(tstart), ustart(), uprevlap(), ulap(), clk_tk(sysconf(_SC_clk_TCK)) { 泰晤士报(美国报),; 标准::副本(&ustart,&ustart+1,&uprevlap); std::复制(&ustart,&ustart+1,&ulap); }; 空圈() { 标准:复制(&ulap,&ulap+1,&uprevlap); tprevlap=tlap; 泰晤士报(&ulap); tlap=时钟(); } 双部分用户时间() { 返回((双)ulap.tms_utime-ustart.tms_utime)/clk_tk; } 双圈用户时间() { 返回((双精度)(ulap.tms_utime-uprevlap.tms_utime))/clk_tk; } };,c++,multithreading,clock,stopwatch,C++,Multithreading,Clock,Stopwatch,给定一个进程a,clock()函数的确切度量是什么 仅进程A所需的CPU时间(这是我想要的…) 在进程A的同一线程上运行的所有进程所需的CPU时间 机器所有线程上所有进程所需的CPU时间 例如,当运行测试A是机器上运行的唯一测试时,如果秒表计算测试A的时间为100秒,如果我启动测试A加上测试B、C和D,那么为测试A计算的时间是否为100秒?看看我写的是什么。。。你为什么不运行它并检查一下呢?此外,您还严重混淆了术语:进程、线程、计算和度量。我发现很难理解,你到底在问什么,你的用例是什么。

给定一个进程a,clock()函数的确切度量是什么

  • 仅进程A所需的CPU时间(这是我想要的…)
  • 在进程A的同一线程上运行的所有进程所需的CPU时间
  • 机器所有线程上所有进程所需的CPU时间

  • 例如,当运行测试A是机器上运行的唯一测试时,如果秒表计算测试A的时间为100秒,如果我启动测试A加上测试B、C和D,那么为测试A计算的时间是否为100秒?

    看看我写的是什么。。。你为什么不运行它并检查一下呢?此外,您还严重混淆了术语:进程、线程、计算和度量。我发现很难理解,你到底在问什么,你的用例是什么。