Я хотел бы поделиться тестовым вопросом, который я недавно встретил, и обсудить его:
Напишите программу на 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);
}