time_point steady_clock example c++ time c++11 chrono

c++ - example - std:: chrono:: steady_clock



std:: chrono y cout (4)

Tengo un problema estúpido. Intento cambiar a los encabezados c ++ 11 y uno de esos es chrono. Pero mi problema es que no puedo explicar el resultado de las operaciones de tiempo. Por ejemplo:

auto t=std::chrono::high_resolution_clock::now(); cout<<t.time_since_epoch();

da:

inicializando el argumento 1 de ''std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&&, const _Tp&) [with _CharT = char, _Traits = std::char_traits<char>, _Tp = std::chrono::duration<long int, std::ratio<1l, 1000000l> >]'' ... /usr/include/c++/4.6/ostream

cout<<(uint64_t)t.time_since_epoch();

da un lanzamiento inválido


Como han notado otros, puede llamar a la función miembro count() para obtener el recuento interno.

Quería agregar que estoy intentando agregar un nuevo encabezado: <chrono_io> a esta biblioteca. Está documentado here . La principal ventaja de <chrono_io> sobre simplemente usar count() es que las unidades de tiempo de compilación se imprimen para usted. Por supuesto, esta información se puede obtener manualmente, pero es mucho más fácil tener la biblioteca para usted.

Para mí, tu ejemplo:

#include <iostream> #include <chrono_io> int main() { auto t = std::chrono::high_resolution_clock::now(); std::cout << t.time_since_epoch() << ''/n''; }

Productos:

147901305796958 nanoseconds

El código fuente para hacer esto es de código abierto y está disponible en el enlace de arriba. Consta de dos encabezados: <ratio_io> y <chrono_io> , y 1 fuente: chrono_io.cpp .

Este código debe considerarse experimental. No es estándar, y casi con seguridad no estará estandarizado como está. De hecho, los comentarios preliminares del LWG indican que preferirían que la salida por defecto fuera lo que este software llama la "forma abreviada". Este resultado alternativo se puede obtener con:

std::cout << std::chrono::duration_fmt(std::chrono::symbol) << t.time_since_epoch() << ''/n'';

Y salidas:

147901305796958 ns


No estoy seguro de lo que espera de este elenco, tal vez usted quería t.time_since_epoch().count() ?


Si desea tiempo en resolución de milisegundos, así es como puede hacerlo:

auto t1 = std::chrono::high_resolution_clock::now(); //process to be timed auto t2 = std::chrono::high_resolution_clock::now(); std::cout << "process took: " << std::chrono::duration_cast<std::chrono::milliseconds>(t2 - t1).count() << " milliseconds/n";

No olvides agregar entre los encabezados incluidos:

#include <chrono> //timing