如何测量一组特定线程的CPU时间? 我在Linux上运行C++程序。
有几个线程池(用于计算、io、等等) 系统调用clock()为我提供了一种方法来测量进程中所有CPU核所花费的CPU时间 但是,我只想测量计算线程池中的线程所花费的CPU时间 我怎样才能做到呢如何测量一组特定线程的CPU时间? 我在Linux上运行C++程序。,c++,linux,multithreading,performance,measure,C++,Linux,Multithreading,Performance,Measure,有几个线程池(用于计算、io、等等) 系统调用clock()为我提供了一种方法来测量进程中所有CPU核所花费的CPU时间 但是,我只想测量计算线程池中的线程所花费的CPU时间 我怎样才能做到呢 感谢:D获取您可以使用的每个线程的CPU时钟ID: 使用此CPU时钟ID可以使用以下命令检索当前线程的CPU时间: 以下是示例代码以演示相同的功能: struct timespec currTime; clockid_t threadClockId; //! Get thread clock Id pt
感谢:D获取您可以使用的每个线程的
CPU时钟ID
:
使用此CPU时钟ID
可以使用以下命令检索当前线程的CPU时间:
以下是示例代码以演示相同的功能:
struct timespec currTime;
clockid_t threadClockId;
//! Get thread clock Id
pthread_getcpuclockid(pthread_self(), &threadClockId);
//! Using thread clock Id get the clock time
clock_gettime(threadClockId, &currTime);
这并不理想,但我认为最简单的解决方案是使用每个线程的开始和停止时间戳记录一些消息,并通过对这些日志进行后处理来获取计时。您似乎还可以根据调用
clock\u gettime(clock\u thread\u CPUTIME\u ID,&currTime)
,这样就不需要pthread依赖性。