Я хотел бы поделиться тестовым вопросом, с которым я недавно встречался, и обсудить его:
Написать программу на C, которая приблизительно измеряет издержки переключения контекста> между ядром и пользовательским пространством в UNIX/ Система Linux (без использования> pthread API).Пожалуйста, укажите предположения, на которых основана ваша грубая оценка>.
Я хотел бы обсудить с более продвинутыми программистами C различные варианты этой проблемы.
У меня ограниченные знания в программировании на C, и я задокументировал себя, чтобы дать приемлемый ответ:
https://eli.thegreenplace.net/2018/measuring-context-switching-and-memory-overheads-for-linux-threads/
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);
}