Red de conocimiento informático - Computadora portátil - c determina si 1 requiere eficiencia

c determina si 1 requiere eficiencia

¿Quieres utilizar el bit del sistema configurado en la universidad?

Si quieres ser realmente eficiente, utiliza un carácter unsigned para almacenarlo tú mismo

Cada acceso a la memoria requiere al menos 1 byte

El bit establecido es solo un conveniencia Método de programación

Nada eficiente

Cada vez que obtienes un bit, debes leer al menos un byte de datos de la memoria

Cada acceso en se necesita leer al menos un byte de datos de la memoria

Si se utiliza un carácter sin firmar, se requiere al menos 1 byte para cada acceso a la memoria. p>

Utilice "unsigned?char" usted mismo

Obtenga un byte a la vez

Compare 8 bits a la vez

La mayoría eficaz El método consiste en incrustar el ensamblaje usted mismo

El siguiente es un ejemplo

Solo como referencia:

#include?lt;stdio.hgt;

unsigned?char?inline?calc(unsigned?char*?src, unsigned?char*?pos)

{

unsigned?char?x=0;

unsigned?char?uc=*(src (unsigned?int)pos);

_asm

{

push?ecx

mov?ecx, 8

bucle1: shr?uc, 1

adc?x, 0

bucle?bucle1

pop?ecx

}

return?x;

}

int?main()

{

Carbón sin firmar?bittest[9]="x01\x02\x03\x04\x5\x6\x7\xff", *p=NULL;

for(int?i=0;ilt;9;i)

printf("bitd: d\n", i, calc(bittest, p ));

return ?;

}

Si el resultado es incorrecto, por favor dímelo

Es al menos 8 veces más rápido que bitset

Si la implementación interna de bitset no está optimizada a nivel de ensamblaje, podría ser cientos de veces más rápida

Pruébelo usted mismo. Pruébalo tú mismo