gpt4 book ai didi

c++ - 如何在macOS中测量线程的执行时间?

转载 作者:行者123 更新时间:2023-12-03 13:02:00 27 4
gpt4 key购买 nike

有什么办法可以衡量在macOS下线程的执行时间?我知道有getrusage函数,但是它只能用来测量进程时间(在Linux下,可以扩展到测量线程时间,但是不幸的是我在MacO下工作)。我需要测量线程时间(用户空间和内核空间中已处理时间的总和)。确切的类似物是GetThreadTimes(https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-getthreadtimes)下的Windows

最佳答案

您可以将RUSAGE_THREAD作为第一个参数传递给getrusage
编辑:
看起来Mac仅支持RUSAGE_SELFRUSAGE_CHILDRENCLOCK_THREAD_CPUTIME_ID是另一个选项,它跟踪调用线程的CPU时间。请注意,这是CPU时间,而不是挂钟时间,例如,不会考虑花费在 sleep 上的任何时间。

#include <stdio.h>
#include <pthread.h>
#include <time.h>

void* thread_func(void* args)
{
struct timespec tp;
ret = clock_gettime(CLOCK_THREAD_CPUTIME_ID, &tp);
printf("thread elapsed secs: %ld nsecs %ld\n", tp.tv_sec, tp.tv_nsec);
}
int main()
{
pthread_t thread;
pthread_create(&thread, NULL, thread_func, NULL);
pthread_join(thread, NULL);
}

关于c++ - 如何在macOS中测量线程的执行时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65988904/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com