es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Medición del tiempo transcurrido, almacenando el tiempo de inicio como un tipo primitivo.

1) Necesito medir el tiempo transcurrido en milisegundos.

2) Necesito almacenar el tiempo de inicio como un tipo primitivo.

3) Necesito obtener el tiempo de inicio como un tipo primitivo, al hacer la comparación para determinar cuánto tiempo ha pasado.

¿Alguna sugerencia?

Tengo C++17 y no quiero utilizar ninguna biblioteca externa (como boost).

std::chrono sería aceptable si alguien pudiera explicarme cómo convertir el tiempo transcurrido hacia/desde un tipo primitivo. No soy muy bueno en C++.

La precisión de la resolución no es importante… si está desfasada por decenas de milisegundos, está bien, solo necesito implementar un retraso… por ejemplo, 100 ms o 1.5 s.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para medir el tiempo transcurrido en milisegundos y almacenar el tiempo de inicio como un tipo primitivo, se puede utilizar la biblioteca std::chrono en C++17. Aquí hay un ejemplo del código:

    #include <chrono>
    
    using namespace std::chrono;
    
    // Almacenar el tiempo de inicio como un tipo primitivo
    auto start = steady_clock::now();
    
    // Realizar alguna tarea
    
    // Calcular el tiempo transcurrido en milisegundos
    auto end = steady_clock::now();
    auto elapsed_ms = duration_cast<milliseconds>(end - start);
    
    // Convertir el tiempo transcurrido a un tipo primitivo (long long)
    auto elapsed_time = elapsed_ms.count();
    
    // Comparar el tiempo transcurrido con una duración especificada (en milisegundos)
    if (elapsed_time >= 100) {
      // Realizar una acción
    }
    

    En el código anterior, steady_clock::now() se utiliza para obtener el tiempo actual como un std::chrono::time_point. Se pueden restar dos puntos de tiempo para obtener el tiempo transcurrido, que luego se convierte a milisegundos usando duration_cast. Para convertir la duración a un tipo primitivo, se puede utilizar la función count(), que devuelve el número de ticks en la duración como un tipo long long.

    Se puede ajustar la comparación de duraciones para adaptarla al tiempo de retraso deseado. Ten en cuenta que steady_clock no está garantizado que sea monótono, por lo que es posible que se prefiera utilizar high_resolution_clock si se desea mayor precisión.

Comments are closed.