FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
campo de bit vs int -> velocidad
HOLA AMIGOS!
la verdad son estupendos respondiendo las preguntas! se ve q saben mucho. muchas gracias! Vuelvo con una nueva pregunta. que es mas rapido? campo de bit o int Les comento, tengo un programa que me esta consumiendo mucha RAM y tiempo, lo mejore lo mejor q pude. Pero aun asi esta tardando demasiado. por eso mi pregunta de hoy es. definir un campo de bits unsigned valor:4; //son valores positivos los q tengo q manejar ó int valor; ya que con short int valor; //es lento a comparacion con el int Muchas gracias! |
#2
|
||||
|
||||
Tada la vida.. las operaciones de Bits, van a ser mas rápida, ya que son operaciones propias del Microprocesador(y no del Sistema Operativo) que estan incluidas en la unidad ALU.(Unidad Aritmética Lógica).
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Última edición por rgstuamigo fecha: 05-12-2009 a las 15:23:49. |
#3
|
||||
|
||||
Pues a mi no me queda claro que sea así. El procesador, de maneral "natural", mueve enteros, no bits, y las operaciones lógicas son entre enteros ¿no? Además, habría que ver qué exactamente hace C con un campo de bits, pues a mi me parece que simplemente usa un entero dejando unos cuantos bits sin usar.
// Saludos |
#4
|
||||
|
||||
Pues veamos lo que pasa:
Código:
struct _eq{ UINT uno: 1; UINT dos: 7; UINT tres: 8; }; //--------------------------------------------------------------------------- void Fun1() { _eq eq; eq.uno = 1; eq.dos = 4; } //--------------------------------------------------------------------------- void Fun2() { WORD EQ; EQ |= 1; EQ &= 0xFF01; EQ |= 4 << 1; } El primer caso con campos de bits quedaría compilado así: Código:
// eq.uno = 1; or word ptr[ebp-0x34], 0x1 // eq.uno = 4; mov dl, [ebp-0x34] and dl, 0x1 or dl, 8 mov [ebp-0x34], dl Código:
or word ptr[ebp-0x34], 0x1 and word ptr[ebp-0x34], 0xFF01 or word ptr[ebp-0x34], 8 Si lo que prima es la velocidad, es mejor usar la aritmética binaria, en otro caso es mejor el uso de campos de bits pues son mas comprensibles y se estructura mejor el código. Saludos. Última edición por escafandra fecha: 05-12-2009 a las 18:47:08. |
#5
|
||||
|
||||
Buen ejemplo escafandra,con eso queda todo aclarado.
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
|
#6
|
|||
|
|||
ok!
Lo que pasa es q tengo un code q tarda mucho en el procesado, era logico q tarde pero queria saber si existia alguna posibilidad de acelerarlo con campo de bits pero veo q me va a llevar mas tiempo el traslado a campo de bits Y ver q funcione todo bien mas q otra cosa. Muchas gracias! BC++ la verdad pensaba que los int al estar definidos por el compilador iban a ser mas rapidos ocupan mas memoria sii pero pense q eran mas rapidos. |
#7
|
||||
|
||||
Cita:
Saludos. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Dif en velocidad | dao_ar | Firebird e Interbase | 2 | 23-11-2009 17:06:05 |
Velocidad de un reporte en 2 pcs.. | lbidi | Impresión | 1 | 11-07-2008 14:33:33 |
Velocidad en interbase | r.g.r | Firebird e Interbase | 3 | 22-05-2007 20:14:25 |
Velocidad en red | Jordy | Varios | 2 | 11-01-2005 09:54:58 |
|