URGENTE

Som
14 de Enero del 2004
Necesitaria urgentemente que alguien me dijera como puedo medir el rendimiento de lines de codigo, pero en NANOSEGUNDOS, llevo ya un par de semanas y no encuentro nada.

Baltasar
14 de Enero del 2004
Pues no sé cómo leer esos nanosegundos, pero de cualquier manera, creo que un buen "truco" sería realizar un bucle con el código que desees controlar, de esa manera si repites 1000 veces una parte del código y controlas el tiempo en milisegundos, te devolverá lo que tardaría cada bucle en nanosegundos, no? por supuesto que hay que tener en cuenta el tiempo perdido en el for y el next, o el while, pero considero que puede ser despreciable.

Sólo aportar mi idea, saludos.

reventador nikomedes
14 de Enero del 2004
hola Som,

Hace unos 4 años tuve que hacer un programa en Visual Basic en el que controlaba el peso que me daba una balanza por el puerto serie. A esta balanza debia pedirle el peso aproximadamente cada 20 milisegundos, y descubrí una función en la API para controlar bastante aproximado estos intervalos tan pequeños.
La función funciona si el ordenador tiene un contador de alta resolución (suelen llevarlo todos). Dicha función debes declararla así:

Public Declare Function QueryPerformanceCounter Lib "kernel32" Alias "QueryPerformanceCounter" (lpPerformanceCount As LARGE_INTEGER) As Long


Y en el código para obtener un intervalo entre lineas de código debes poner esto:

Dim Ctr1 As Long, Ctr2 As Long
QueryPerformanceCounter Ctr1

... 'Código que quieres controlar su tiempo

QueryPerformanceCounter Ctr2
Debug.Print "Cuentas: "; (Ctr2 - Ctr1) / 1193180

En este código se divide por 1193180, ahora no recuerdo por qué dividía por este valor pero me imagino que sería para conseguir el tiempo pasado en milisegundos.


Espero que te sirva, un saludo.