Để đo thời gian thực hiện của một hàm, tôi có thể sử dụng cả hai. Nhưng sự khác nhau giữa việc sử dụng <chrono>
và <ctime>
là gì? Tôi có nên thích cái này thay vì cái khác không?Sự khác nhau giữa <chrono> và <ctime> là gì?
Trả lời
ctime
là tiêu đề kiểu C, cũ, không an toàn và không chính xác như chrono
. chrono
là tùy chọn ưa thích trong C++; Đó là một tiêu đề C++ hiện đại, nó an toàn, chính xác như phần cứng của chúng ta cho phép, nó có chức năng mở rộng, và quan trọng hơn, nó theo logic C++ (chứ không phải C) sao cho những thứ nhất định sẽ tự nhiên/biểu cảm hơn. chúng ta có thể mong đợi nó nhận thức được nhiều tính năng ngôn ngữ đương đại (chủ đề, ngoại lệ, vv) - chúng ta không thể đưa ra giả định tương tự cho ctime
.
Điều đó nói rằng, vẫn còn một số trường hợp sử dụng cho ctime
(hoặc thậm chí time.h
), ví dụ: khi chúng ta cần nói chuyện với một số API C hoặc khi chúng ta dựa vào các cơ sở mã cũ hoặc khi chúng ta sử dụng một số thư viện theo một loại logic khác. C++ được thiết kế thực dụng và không phải là "thuần khiết" trong mọi khía cạnh; đây là lý do tại sao ctime
và tất cả các loại tiêu đề cổ, cú pháp và các tính năng ngôn ngữ vẫn còn ở đó ngay cả khi các lập trình viên không được khuyến khích sử dụng chúng.
ctime
là trường học cũ. Việc sử dụng duy nhất của nó bây giờ là một giải pháp crap để lấy ngày từ các điểm thời gian (vì C++ không có một thư viện datetime chuẩn đầy đủ). Đối với nhu cầu thời gian chung, hãy sử dụng chrono
. Nếu bạn cần bật system_clock::time_point
vào ngày/giờ, hãy sử dụng ctime
.
Chỉ cần tự hỏi tại sao 'ctime' là một giải pháp crap? –
Cách tốt hơn so với 'ctime' để rẽ 'system_clock :: time_point' thành cấu trúc ngày/giờ của trường: http://howardhinnant.github.io/date_v2.html :-) –
@YeeLiu:' ctime' không phải là "loại an toàn". Ví dụ 'difftime' trả về' double' thay vì 'duration'. Và 'tm.tm_sec' có kiểu' int' thay vì gõ 'giây'. Sự thiếu an toàn kiểu này có nghĩa là trình biên dịch không thể kiểm tra các lỗi logic (ví dụ) thực hiện đại số vô lý trên các đơn vị thời gian. –
- 1. Sự khác nhau giữa <%: và <% = và <% # trong aspx là gì?
- 2. Sự khác nhau giữa "<>" và "! =" Là gì?
- 3. XSLT: sự khác nhau giữa <copy-of> và <apply-templates> là gì?
- 4. Sự khác nhau giữa <% # và <% = thẻ mở là gì?
- 5. Sự khác nhau giữa <? super E> và <? extends E> là gì?
- 6. Sự khác nhau giữa <stdin> và <STDIN> là gì?
- 7. Sự khác nhau giữa HashSet <T> và Danh sách <T> là gì?
- 8. Sự khác nhau giữa <% %> và <%=%> là gì?
- 9. Sự khác nhau giữa Danh sách <string> và IEnumerable <String> là gì?
- 10. Sự khác nhau giữa <a_element /> và <a_element xsi: nil = "true" /> là gì?
- 11. Sự khác nhau giữa <TargetFramework> và <RuntimeFrameworkVersion> là gì?
- 12. Sự khác nhau giữa cout << cout và cout << & cout trong C++ là gì?
- 13. Sự khác nhau giữa NHibernate Query <> vs QueryOver <> là gì?
- 14. Whats sự khác biệt giữa <RequiredTargetFramework> và <targetframeworkversion> là gì?
- 15. Java: Sự khác biệt giữa <init> và <clinit> là gì?
- 16. Sự khác nhau giữa IEnumerable và IEnumerable <T>?
- 17. Sự khác biệt giữa <system.web> và <system.webServer> là gì?
- 18. Sự khác biệt giữa <f:viewParam> và <f:param> là gì?
- 19. Sự khác biệt giữa <pubDate> và <lastBuildDate> trong RSS là gì?
- 20. Sự khác biệt giữa DbSet <> và DbSet ảo <> là gì?
- 21. Sự khác nhau giữa Class clazz và Class <?> clazz trong java là gì?
- 22. Trong C++, sự khác nhau giữa static_cast <double> (a) và double (a) là gì?
- 23. Sự khác nhau giữa Vec <struct> và & [struct] là gì?
- 24. Sự khác nhau giữa ReadOnlyCollection <T> và ReadOnlyCollectionBuilder <T> trong .Net là gì?
- 25. Sự khác nhau giữa Span <T> và Bộ nhớ <T> trong C# 7.2 là gì?
- 26. Sự khác nhau giữa <xsl: apply-templates /> và <xsl: apply-templates select = "." />
- 27. Sự khác biệt giữa <T: Trait> Hộp <T> và & Trait/Box <Trait> là gì?
- 28. Sự khác nhau giữa <? mở rộng Object> và <E mở rộng Object>?
- 29. Sự khác nhau giữa <#eval và <#bind trong asp.net
- 30. Sự khác nhau giữa <% ... %> và <%= .. %> trong đường ray 3
Giây so với nano giây? Khả năng sử dụng hiện đại so với khả năng sử dụng bán cổ xưa? –
Thay đổi lớn về tư tưởng sau 40 năm sử dụng. – user4581301