Cómo usar la función para obtener tiempo de nivel ns en Linux

  
                

Cuando se realiza la operación del sistema Linux, ya que el rendimiento del programa de prueba necesita, el tiempo debe ser exacto hasta el nivel ns, ¿cómo lograrlo? La siguiente serie pequeña le enseña cómo usar la función para lograr la adquisición de tiempo de nivel de usuario de Linux ns, aprendamos juntos.

I. Introducción

Con frecuencia tenemos que obtener información precisa de nivel ns de tiempo de los procedimientos de prueba de rendimiento para medir el rendimiento cuando un programa se describe a continuación en el espacio de usuario de Linux para obtener ns Método de nivel de tiempo

Segundo, espacio de usuario para obtener ns nivel de tiempo

Usando la función clock_gettime, el prototipo de función es el siguiente:

sys_clock_gettime largo (clockid_t which_clock, struct timespec * tp);

1.which_clock parámetro explicación

CLOCK_REALTIME: El tiempo en tiempo real del sistema cambia con el tiempo en tiempo real del sistema, es decir, a partir de UTC1970-1-1 0: 0: 0, si el sistema está en el momento intermedio El usuario cambia la hora y, en consecuencia, la hora correspondiente.

CLOCK_MONOTONIC: Inicia desde el momento en que se inicia el sistema, y ​​no se ve afectado por la modificación de la hora del sistema por parte del usuario.

CLOCK_PROCESS_CPUTIME_ID: Este proceso es Tiempo gastado por la CPU del sistema de códigos actual

CLOCK_THREAD_CPUTIME_ID: tiempo gastado por el subproceso a la CPU del sistema de códigos actual

2.struct timespec estructura

El código es el siguiente:

struct timespec

{

time_t tv_sec;

long int tv_nsec;

};

El código de ejemplo es el siguiente:

El código es el siguiente:

#include "stdio.h"

#include "stdlib.h"

#include 《time.h》

int main (void)

{

struct timespec time_start = {0, 0}, time_end = {0, 0 };

clock_gettime (CLOCK_REALTIME, &time_start);

printf (" hora de inicio% llus,% llu ns \\ n ", time_start.tv_sec, time_start.tv_nsec);

clock_gettime (CLOCK_REALTIME, &time_end);

printf (" endtime% llus,% llu ns \\ n ", time_end.tv_sec, time_end.tv_nsec);

printf (&duquo; duración:% llus% lluns \\ n ", time_end.tv_sec-time_start.tv_sec, time_end.tv_nsec-time_start.tv_nsec);

return 0;

}

comando de compilación:

El código es el siguiente:

gcc test.c -o test -lrt

Resultado de ejecución:

El código es el siguiente:

. /test

hora de inicio 1397395863s, 973618673 ns

endtime 1397395863s, 973633297 ns

duration: 0s 14624ns

De los resultados en ejecución, puede ver que se llama a printf ( La función necesita aproximadamente 15 usus a la vez.

El método anterior para obtener el tiempo de nivel ns mediante el uso de funciones en Linux. Si necesita probar el rendimiento del programa a tiempo de nivel ns, puede probar el método descrito en este artículo. ¿No es muy simple?

Copyright © Conocimiento de Windows All Rights Reserved