Это системный вызов, как сказали другие ответы, и другие ответы дают вам хороший способ измерить стоимость вашей системы.(Находясь в ядре, он не должен выполнять большую работу, поэтому он довольно близок к стоимости чисто служебных системных вызовов. И Linux сделал все возможное для эффективной реализации системных вызовов. Так что в этом смысле вы можете рассмотреть это довольно хорошооптимизирован.)
В отличие от других ответов, я бы не стал считать это настолько дешевым, чтобы о нем автоматически не стоило беспокоиться.Если это во внутреннем цикле, это зависит от того, что еще вы делаете во внутреннем цикле.Если это сервер, обрабатывающий запросы, он, вероятно, делает много системных вызовов на запрос, и еще один действительно не сильно изменит стоимость каждого запроса.Тем не менее, я видел код, в котором издержки syscall от вызова time () (или gettimeofday (), к чему он в действительности сводится) оказывают пагубное влияние.
Если вы беспокоитесь о стоимостиСледующее, что вы должны спросить себя, это то, что есть более дешевые способы найти время.В общем, дешевле не будет хорошего способа.Если вы используете x86, вы можете запросить процессор с помощью инструкции rdtsc (и, скорее всего, есть аналог на других архитектурах процессора) - это единственная инструкция по сборке, которая не является привилегированной, поэтому вы можете поместить ее в свой код где угодно.Но есть много подводных камней - rdtsc не всегда увеличивается с предсказуемой скоростью, особенно если скорость процессора меняется для управления питанием, в зависимости от того, какую именно модель процессора вы используете;значения могут не синхронизироваться между несколькими процессорами и т. д. ОС отслеживает все это и предоставит вам удобную и простую в использовании версию информации при вызове gettimeofday ().