Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: Pogacha en 27 de Octubre de 2005, 12:58:20 PM

Título: Como Saber La Freq De Un Micro?
Publicado por: Pogacha en 27 de Octubre de 2005, 12:58:20 PM
 En win32 como se cual es la velocidad de un micro? (o el rendimiento si fuera posible)
Saludos.
Título: Como Saber La Freq De Un Micro?
Publicado por: fiero en 27 de Octubre de 2005, 01:18:03 PM
 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;  
}
Título: Como Saber La Freq De Un Micro?
Publicado por: TheAzazel en 27 de Octubre de 2005, 01:18:54 PM
 Para ver las caracteristicas de tu micro, descargate el wcpuid de este enlace:

http://hp.vector.co.jp/authors/VA002374/sr...c/download.html

Existe 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
Título: Como Saber La Freq De Un Micro?
Publicado por: Warchief en 27 de Octubre de 2005, 01:28:40 PM
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
Título: Como Saber La Freq De Un Micro?
Publicado por: Pogacha en 27 de Octubre de 2005, 01:56:03 PM
 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
Título: Como Saber La Freq De Un Micro?
Publicado por: Pogacha en 27 de Octubre de 2005, 03:58:00 PM
 
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.
Título: Como Saber La Freq De Un Micro?
Publicado por: fiero en 27 de Octubre de 2005, 06:11:29 PM
 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
Título: Como Saber La Freq De Un Micro?
Publicado por: [EX3] en 27 de Octubre de 2005, 11:56:21 PM
 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...
Título: Como Saber La Freq De Un Micro?
Publicado por: Pogacha en 28 de Octubre de 2005, 12:28:26 AM
 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
Título: Como Saber La Freq De Un Micro?
Publicado por: [EX3] en 28 de Octubre de 2005, 02:58:53 AM
 
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...