<chrono>和<ctime>有什么区别?

时间:2016-03-18 22:30:53

标签: c++ c++11 chrono ctime

为了测量功能的执行时间,我可以同时使用两者。但是使用<chrono><ctime>之间有什么区别?我应该更喜欢一个而不是另一个吗?

2 个答案:

答案 0 :(得分:7)

ctime是一个C风格的标题,它是旧的,不是类型安全的,不如chrono准确。 chrono是C ++中的首选选项;它是一个现代的C ++标题,它的类型安全,就像我们的硬件允许的那样准确,它具有扩展的功能,更重要的是,它遵循C ++(而不是C)逻辑,因此某些事物会更加自然/富有表现力,所以我们可能期望它知道许多当代语言特征(线程,异常等) - 我们不能对ctime做出相同的假设。

尽管如此,ctime(甚至time.h)仍有几个用例,例如当我们需要与某些C API交谈时,或者当我们依赖旧的代码库时,或者当我们使用一些遵循不同逻辑的库时。 C ++旨在务实,不要在任何方面“纯粹”;这就是为什么ctime和各种过时的标题,语法和语言特征仍然存在的原因,即使程序员不鼓励使用它们。

答案 1 :(得分:5)

response是老派。它现在唯一的用途是作为从时间点获取日期的垃圾解决方案(因为c ++没有足够的标准日期时间库)。对于一般时间需求,请使用ctime。如果您需要将chrono转换为日期/时间,请使用system_clock::time_point