Código: Seleccionar todo
$ time ./raw2hr modelo.raw
real 0m0.008s
user 0m0.008s
sys 0m0.000s
$ time ./raw2hrv2 modelo.raw
real 0m9.823s
user 0m9.821s
sys 0m0.004s
El programa raw2hr usa el primer algoritmo, el que usa la luminancia de la imagen original para generar los píxeles y atributos de la versión para Spectrum.
El programa raw2hrv2 usa el algoritmo de fuerza bruta que para cada tira de 8 píxeles de la imagen original, genera todas las posibles combinaciones de colores y escoge aquella que se parezca más a la tira original. Es ahí donde uso el método de mínimos cuadrados para medir el error.
Como ves, tarda casi 10 segundos. Esto es usando un Pentium 4 a 3GHz, que aunque es hyperthreading, resulta que yo no uso en el código fuente nada que aproveche esto. La cosa es que este algoritmo es altamente paralelizable. Tengo que recompilarlo con OpenMP, aunque sea como curiosidad a ver cuánto consigo acelerarlo...