velocidad test mejorar medidor latencia internet ideal cual comprobar como c++ winapi timer latency

c++ - test - Temporizadores para medir la latencia



medidor de ping (3)

Mencionó que usa GetTickCount (), por lo que le recomendaré que consulte QueryPerformanceCounter ().

Al medir la latencia de la red (tiempo ack recibido - mensaje de tiempo enviado) en cualquier protocolo sobre TCP, ¿qué temporizador recomendaría utilizar y por qué? ¿Qué resolución tiene? ¿Cuáles son otras ventajas / desventajas?

Opcional: ¿cómo funciona?

Opcional: ¿qué temporizador NO usarías y por qué?

Estoy buscando principalmente soluciones de Windows / C ++, pero si desea comentar sobre otros sistemas, siéntase libre de hacerlo.

(Actualmente usamos GetTickCount (), pero no es un temporizador muy preciso.)


Realmente no hay sustituto para la instrucción rdtsc. No puede estar seguro de qué resolución será compatible con QueryPerformanceCounter. Algunos tienen una granularidad muy grande (baja frecuencia / tasa de incremento), algunos no devuelven nada.

En cambio, te recomiendo que uses la instrucción rdtsc. No requiere ninguna implementación de sistema operativo y devuelve la cantidad de ciclos de reloj internos de la CPU que han transcurrido desde que la computadora / procesador / núcleo se encendió. Para un procesador de 3 GHz, eso es 3 mil millones de incrementos por segundo, no es más preciso que eso, ¿ahora lo hace? Esta instrucción está disponible para x86-32 y -64 comenzando con el Pentium o Pentium MMX. Por lo tanto, debe ser accesible desde Linux x86 también.

Hay muchas publicaciones al respecto aquí en .com. Yo mismo he escrito algunos ...


Esta es una copia de mi respuesta de: C ++ función del temporizador para proporcionar tiempo en nano segundos

Para Linux (y BSD), quiere usar clock_gettime () .

#include <sys/time.h> int main() { timespec ts; // clock_gettime(CLOCK_MONOTONIC, &ts); // Works on FreeBSD clock_gettime(CLOCK_REALTIME, &ts); // Works on Linux }

Para Windows, quiere usar QueryPerformanceCounter . Y aquí hay más sobre QPC

Aparentemente hay un problema conocido con QPC en algunos chipsets, por lo que es posible que desee asegurarse de que no tenga esos chipset. Además, algunos AMD de doble núcleo también pueden causar un problema . Ver la segunda publicación de sebbbi, donde dice:

QueryPerformanceCounter () y QueryPerformanceFrequency () ofrecen una resolución un poco mejor, pero tienen problemas diferentes. Por ejemplo, en Windows XP, todas las CPU AMD Athlon X2 de doble núcleo devuelven la PC de cualquiera de los núcleos "aleatoriamente" (a veces la PC salta un poco hacia atrás), a menos que instale especialmente el paquete de controlador dual-core AMD para solucionar el problema. No hemos notado ninguna otra CPU dual + core que tenga problemas similares (p4 dual, p4 ht, core2 dual, core2 quad, phenom quad).