• Viernes 8 de Noviembre de 2024, 20:15

Autor Tema:  Que Es Más Rápido  (Leído 2231 veces)

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Que Es Más Rápido
« en: Jueves 5 de Abril de 2007, 21:40 »
0
Saludos
estoy haciendo unas operaciones matemáticas y parte de ellas es dividir un entero de 32 bit entre 8, para lo cual o bien puedo utilizar DIV entre 8 o bien puedo usar SHR con 3 bytes.

Con ambos me funciona OK, pero quiero saber cual me es mas eficiente a nivel de procesamiento ya que es es un modulo critico de la aplicación que estoy haciendo.

Utilizo procesadores PENTIUM 4, he revisado el código generado por el compilador y en ambos casos me genera código binario diferente, es decir en efecto al compilar el código generado utiliza los operadores DIV o SHR correspondientes según el caso.

gracias.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Que Es Más Rápido
« Respuesta #1 en: Jueves 5 de Abril de 2007, 21:43 »
0
Bueno, mientras tanto les cuento que acabo de encontrar en un lugar de internet que los procesadores cuando ejecutan div con divisores potencia de dos resuelven usar SHR en lugar de DIV, sera cierto?
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Que Es Más Rápido
« Respuesta #2 en: Jueves 5 de Abril de 2007, 21:44 »
0

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Que Es Más Rápido
« Respuesta #3 en: Jueves 5 de Abril de 2007, 22:05 »
0
La respuesta es bastante lógica, SHR es una operacion con bits (consumira un par de ciclos reloj nomas), en cambio DIV es una operacion matemática que consiste en realizar varias restas. Por ejemplo si quieres dividir 800 por 8, lo que va realizar el procesador es algo similar a hacer  100 restas. (Poco eficaz no?)

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Que Es Más Rápido
« Respuesta #4 en: Jueves 5 de Abril de 2007, 22:16 »
0
Si.

Pero según leí si el operando es potencia de 2 DIV actuara como SHR, pero para el poder hacer eso hace validaciones adicionales?

supongo que si.

entonces a la final sea como se sera mas rápido usar SHR :)
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Que Es Más Rápido
« Respuesta #5 en: Jueves 5 de Abril de 2007, 22:48 »
0
Lo de la comprobación, te lo podría llegar a hacer el  ensamblador o el compilador. El procesador no creo, tendría qeu añadir más ciclos reloj a una instruccion con lo que no sería lo más eficaz, para eso que se encargue el programador.

bob esponja

  • Miembro MUY activo
  • ***
  • Mensajes: 411
    • Ver Perfil
    • http://marianoguerra.blogspot.com
Re: Que Es Más Rápido
« Respuesta #6 en: Viernes 6 de Abril de 2007, 14:13 »
0
Citar
Por ejemplo si quieres dividir 800 por 8, lo que va realizar el procesador es algo similar a hacer 100 restas. (Poco eficaz no?)

y de hecho el procesador no resta, solo suma :)

Citar
La resta puede lograrse por medio de la suma de complementos. El complemento de 10 de un número dado es la diferencia entre dicho numero y la potencia de 10 inmediatamente superior.