我想分享一个我最近遇到的测试问题并讨论它:
编写一个 C 程序,粗略测量 UNIX/Linux 系统上内核和用户空间之间的上下文切换开销(不使用 >pthread API)。请指出您的粗略估计所基于的假设。
我想与更高级的 C 程序员讨论这个问题的不同选项。
我在 C 编程方面的知识有限,我记录了自己以提供可接受的答案:
https://www.researchgate.net/post/How_can_I_measure_thread_creation_and_destruction
https://github.com/eliben/code-for-blog/blob/master/2018/threadoverhead/thread-pipe-msgpersec.c
尽管我的知识有限,但我很快意识到这个问题的模棱两可。事实上,这个问题并没有规定是否应该以时间或记忆为单位给出答案。
我个人选择使用库 time.h 和一个非常简单的片段来开发我的推理测量时间。结果应除以 1 000 000。
我的回答有道理还是我完全没有抓住重点?
#include<time.h>
#include<stdio.h>
int main(){
clock_t begin=clock();
int i;
for(i=0;i<1000000;i++){
printf("%d",i);
}
clock_t end=clock();
printf("Time taken:%lf",(double)(end-begin)/CLOCKS_PER_SEC);
}