CLR: .Net / Mono / Boo / Otros CLR > C#

 Performance

(1/4) > >>

JuanK:
Saludos,

Tengo una duda acerca de cual de estas dos instrucciones es mas rapida ya que las necesito en un proceso que se ejecuta miles de veces .


--- Código: Text --- int variableA........... int variable= (byte)((variableA & 0x1C) >> 2);//---------------------------------------------int variable= (byte)((variableA << 3 ) >> 5); 
El punto es que en variable deben quedar solo los bits  3,4,5 de la variable variableA.

Ya he probado ambos y ambos me funcionan produciendo los resultados esperados pero me interesa saber cual tiene un mejor desempeño en el procesador y desde luego cual es la razon de la respuesta.


Gracias.

Enko:
Según tengo entendido, AND consume menso ciclos que SHR o SHL.

Fijate en esta página (el link lo paso Eternal Idol para no desacreditarle el merito):

http://home.comcast.net/~fbui/intel.html

Siguiendo lo que dice las tablas de la página, AND segun que operandos esten en juego, cosume promedio 2 ciclos, mientras que los SHL algo de 5.
ROR algo de 4.

lo que no se, es si "<<" es SHL o ROL pero aun asi, tardan mas que AND.

JuanK:
Bueno ese es un buen dato, vere si hay documentacion para procesadores Pentium y  posteriores que son mi objetivo mas general .

SHL   :rolleyes: ? debe ser << porque no conozco nada en C/C++/C# que haga ROL alguien sabe de alguno?

Eternal Idol:
Es SHL pero todo esto es en C/C++ no se que hara en C#:

mov        eax,dword ptr [ebp-8]
and         eax,1Ch
sar          eax,2
movzx     ecx,al
mov        dword ptr [ebp-4],ecx

mov        edx,dword ptr [ebp-8]
shl          edx,3
sar          edx,5
movzx     eax,dl
mov        dword ptr [ebp-0Ch],eax

De cualquier manera lo mejor es que lo pruebes, con algun bucle que tarde lo suficiente para ver la diferencia real.

JuanK:
OK, bueno he hecho pruebas que tardan hasta 4 segundos con bitmaps uno de

955 * 581 * 3 = 1.58 mb

y otro

868 * 979 * 3 = 2.43 mb

es decir la prueba la hice con los dos al tiempo ( 4.01 mb).

pero mi objetivo es que no tarden ni un segundo, maximo uno.

bueno encontre esto que no me aclara mucho el panorama porque aun hay diferencia.

Seguire tu consejo y vere si puedo en un rato sacar algo de tiempo para un bitmap grande.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa