En win32 como se cual es la velocidad de un micro? (o el rendimiento si fuera posible)
Saludos.
Yo uso esta función, que tarda 1 seg en ejecutarse y devuelve la velocidad en MHz. Se puede hacer que tarde menos, pero con 1 segundo a mí me da mejores resultados. Lo que hace la función es contar el número de veces que se ejecutan ciertas instrucciones en ese tiempo de 1 seg.
un saludo
unsigned int GetCpuSpeed()
{
int timeStart = 0;
int timeStop = 0;
unsigned long StartTicks = 0;
unsigned long EndTicks = 0;
unsigned long TotalTicks = 0;
unsigned long cpuSpeed = 0;
timeStart = GetTickCount(); //GET TICK EDGE
for(;;)
{
timeStop = GetTickCount();
if ( (timeStop-timeStart) > 1 ) // ROLLOVER PAST 1
{
__asm{
xor eax, eax
xor ebx, ebx
xor ecx, ecx
xor edx, edx
_emit 0x0f // CPUID
_emit 0xa2
_emit 0x0f // RDTSC
_emit 0x31
mov [StartTicks], eax
}
break;
}
}
timeStart = timeStop;
for(;;)
{
timeStop = GetTickCount();
if ( (timeStop-timeStart) > 1000 ) //ONE SECOND
{
__asm{
xor eax, eax
xor ebx, ebx
xor ecx, ecx
xor edx, edx
_emit 0x0f // CPUID
_emit 0xa2
_emit 0x0f // RDTSC
_emit 0x31
mov [EndTicks], eax
}
break;
}
}
TotalTicks = EndTicks-StartTicks; // TOTAL
cpuSpeed = TotalTicks/1000000; // SPEED
return (UINT)cpuSpeed;
}
Para ver las caracteristicas de tu micro, descargate el wcpuid de este enlace:
http://hp.vector.co.jp/authors/VA002374/sr...c/download.htmlExiste otro que se llama CPUIDZ o algo asi, pero a mi me gusta mas el que te he dado.
Para ver el rendimiento...hay mil benchmark... depende de lo quieras probar, aspecto grafico? en juegos? cpu en calculos 3d? cpu en calculos matematicos? cpu en aplicaciones normales?
Di que es lo que quieres medir y te dire el q yo utilizo..
EDIT: jeje, y si te referias a desde codigo...fiero te ha dado la funcion para obtener los mhz... jeje como el post esta en programadores...creo que me cole :P
Cita de: "TheAzazel"Existe otro que se llama CPUIDZ o algo asi, pero a mi me gusta mas el que te he dado.
CPUZ ?
http://www.cpuid.org/cpuz.php
Lo necesito en tiempo real ... para determinar el mejor codepath a utilizar.
El codigo de Fiero parece la solución.
Suponia que alguna función de windows debería poder hacerla como cuando vas a propiedades de sistemas <_< pero por mas que rasquetié el registro de windows y toda la msn no encontré nada...
Muchas gracias
Cita de: "fiero"Yo uso esta función, que tarda 1 seg en ejecutarse y devuelve la velocidad en MHz. Se puede hacer que tarde menos, pero con 1 segundo a mí me da mejores resultados. Lo que hace la función es contar el número de veces que se ejecutan ciertas instrucciones en ese tiempo de 1 seg.
Cuando dices ciertas ... no lo entiendo, no estas contando los ciclos de reloj con la RDTSC !?, pueden ser variables?
Muchas gracias.
La función no es mia, creo que la saqué de la página de AMD. Lo quería explicar a groso modo, pero sí, es eso, cuenta el número de ciclos en 1 seg.
un saludo
En Win32 tira del registro de Windows, la info la tienes en este path del registro:
HKEY_LOCAL_MACHINE\Hardware\Description\System\CentralProcessor\0\~MHz
Para mi al menos en VB es la unica forma que conozco.
Toda la informacion del procesador: mhz, nombre, familia, etc.. la obtengo de dicha ruta para una funcion de la dx_lib32 2.0 y es el metodo que implemente en un menu de arranque y configuracion para el juego RAD: Refinden Against Don (y que no se incluyo al final por precisar de las runtimes del VB para tirar y por que el creador del juego se nego a hacer una instalacion para juego e incluirlas :P)
Salu2...
Bueno, gracias, lo busque en varias maquinas y solo esta en 2 de las 5 que probé asi que no me sirve, curiosamente estaba en las que si dice el megajeraje en las propiedades de sistema.
Saludos
Cita de: "Pogacha"Bueno, gracias, lo busque en varias maquinas y solo esta en 2 de las 5 que probé asi que no me sirve, curiosamente estaba en las que si dice el megajeraje en las propiedades de sistema.
Te refieres a la ruta del registro que te puse? :blink:
EDIT: Cierto, en version 9x no existe dicha clave del registros :( Estoy gogleando y no encuentro nada sobre la clave para versiones 9x, parece como si no existiese...
Salu2...