В чем разница между <chrono> и <ctime>?
Для измерения времени выполнения функции я могу использовать оба. Но какая разница между использованием <chrono>
а также <ctime>
? Должен ли я предпочесть одно вместо другого?
2 ответа
ctime
заголовок в стиле C, он старый, не безопасный и не такой точный, как chrono
, chrono
является предпочтительным вариантом в C++; это современный заголовок C++, он безопасен от типов, настолько точен, насколько позволяет наше оборудование, имеет расширенную функциональность и, что более важно, он следует логике C++ (а не C), так что некоторые вещи будут более естественными / выразительными с его помощью, и так что мы можем ожидать, что он осознает многие особенности современного языка (потоки, исключения и т. д.) - мы не можем делать такие же предположения для ctime
,
Тем не менее, есть еще несколько вариантов использования для ctime
(или даже time.h
), например, когда нам нужно поговорить с некоторым C API, или когда мы полагаемся на старые кодовые базы, или когда мы используем какую-то библиотеку, которая следует другой логике. C++ разработан, чтобы быть прагматичным и не быть "чистым" в любом отношении; вот почему ctime
и все виды устаревших заголовков, синтаксисов и языковых функций все еще там, даже если программисты отговаривают их использовать.
ctime
это старая школа Теперь он используется только как дерьмовое решение для получения дат из временных точек (поскольку C++ не имеет адекватной стандартной библиотеки datetime). Для общих нужд времени используйте chrono
, Если вам нужно включить system_clock::time_point
в дату / время, используйте ctime
,