CLR: .Net / Mono / Boo / Otros CLR > C#
Performance
JuanK:
Bueno, nmo he encontrado diferemcias visibles con dos bmp de 1440 * 900 * 3 :blink:
asi que dejare cualquiera de los dos.
gracias.
Eternal Idol:
--- Cita de: "JuanK" --- Bueno, nmo he encontrado diferemcias visibles con dos bmp de 1440 * 900 * 3 :blink:
asi que dejare cualquiera de los dos.
gracias.
--- Fin de la cita ---
Entonces probablemente esto no se ejecute miles de veces seguidas sino espaciadas :scream:
pabloreda:
Amigo JuanK..
fijate en esta pagina, seguramente te puede ayudar en algo...
http://www.azillionmonkeys.com/qed/optimize.html
A veces conociendo un poco mas del problema se puede encontrar una solucion alternativa.. por ejemplo tomando de a 32 bits en vez de 8 podes acelerar el proceso...
JuanK:
Gracias por los consejos.
Bueno he revisado el codigo paso por paso y si bien esa parte toma una parte considerable del tiempo, no es la mas representativa.
Habia pasado por alto algunos detalles y resulta que el problema principal es cuando trato de importar un archivo bmp para convertirlo en un cuadro de mi formato de archivo, puesto que el formato BMP tiene formato de color BRG y el mio tiene formato color RGB asi que lo que haga es extraer los colores del BMP y crear un array de colores en el formato correcto...hace esto:
--- Código: Text --- for (int i = 0; i < bmpArr.Length; i += bytesPorPixel) { colorArray[j] = new T(); colorArray[j++].FromBMPColorArray( bmpArr, i); if (j % bmp.Width == 0) i += paddedBytes; }
Para el ejemplo de las imagenes citadas anteriormente este ciclo iteraria 2'592.000 veces, y el tamaño de bmpArr seria más de 7'776.000 bytes.
donde
T es un tipo generico de Color, el constructor vacio no hace nada
colorArray es un T[]
bmpArr es un byte [] con la informacion de los bytes del bmp, incluyendo los bytes de padding
FromBMPColorArray es un metodo que extrae un color del array del bmp y lo convierte al color con formato RGB.. es decir para el caso de un color de 24 bits hace:
--- Código: Text --- /// <summary> /// Crea un Color de 24 bits a partir de un array de bytes /// </summary> /// <param name="arrByte">Array de bytes que representa un color de un BMP</param> /// <param name="starIndex">Indice desde el cual se inicia la extraccion del color</param> public override void FromBMPColorArray(byte[] arrByte, int starIndex) { rojo = arrByte[starIndex + 2]; verde = arrByte[starIndex + 1]; azul = arrByte[starIndex]; baseType = rojo << 16 | verde << 8 | azul; }
baseType es un Int32 que representa el color.
La verdad no tengo ni la mas remota idea de como optimizarlo más. Acepto cualquier sugerencia por descabellada que sea ( pero que sea posible de hacer) :blink: :lol:
Gracias!!!
Enko:
¿Que tal mantener BGR?
:scream:
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa