Do pomiaru czasu wykonania funkcji można użyć obu. Ale jaka jest różnica między używaniem <chrono>
i <ctime>
? Czy powinienem preferować jeden zamiast drugiego?Jaka jest różnica między <chrono> i <ctime>?
Odpowiedz
ctime
jest nagłówkiem w stylu C, jest stary, nie jest bezpieczny i nie jest tak dokładny jak chrono
. chrono
jest preferowaną opcją w C++; jest to współczesny nagłówek C++, bezpieczny dla użytkownika, tak dokładny, jak pozwala na to nasz sprzęt, ma rozszerzoną funkcjonalność i, co ważniejsze, działa zgodnie z logiką C++ (raczej niż C), aby pewne rzeczy były bardziej naturalne/ekspresyjne z tym i tak możemy oczekiwać, że będzie on świadomy wielu współczesnych cech języka (wątków, wyjątków, itp.) - nie możemy złożyć tych samych założeń dla ctime
.
Mimo to nadal istnieje kilka przypadków użycia dla ctime
(lub nawet time.h
), np. kiedy musimy porozmawiać z C API lub gdy polegamy na starych bazach kodu lub kiedy używamy biblioteki, która ma inną logikę. C++ ma być pragmatyczny i nie być "czysty" pod żadnym względem; właśnie dlatego ctime
i wszelkiego rodzaju przestarzałe nagłówki, składnie i funkcje językowe wciąż istnieją, nawet jeśli programistów zniechęca się do ich używania.
ctime
to stara szkoła. Jego jedynym zastosowaniem jest teraz rozwiązanie problemu z datami (ponieważ C++ nie ma odpowiedniej standardowej biblioteki datetime). Aby zaspokoić ogólne wymagania czasowe, użyj chrono
. Jeśli chcesz zmienić datę system_clock::time_point
, użyj ctime
.
Zastanawiasz się, dlaczego 'ctime' jest rozwiązaniem bzdur? –
Lepszy sposób niż 'ctime', aby włączyć' system_clock :: time_point' w strukturze daty/czasu pola: http://howardhinnant.github.io/date_v2.html :-) –
@YeeLiu: 'ctime' nie jest "wpisz bezpieczny". Na przykład 'difftime' zwraca' double' zamiast 'duration'. Natomiast 'tm.tm_sec' ma typ' int' zamiast typu 'seconds'. Ten brak bezpieczeństwa typu oznacza, że kompilator nie może sprawdzić błędów logicznych, które (na przykład) wykonują nielogiczną algebrę na jednostkach czasu. –
Sekundy vs nanosekundy? Nowoczesna użyteczność a starożytna pół-użyteczność? –
Ogromna zmiana w ideologii po 40-kilku latach użytkowania. – user4581301