Su cuello de botella está en la E/S. Desea que el programa lea tantos datos en la memoria en la menor cantidad de llamadas de E/S. Por ejemplo, leer 256 números con un fread
es más rápido que 256 fread
de un número.
Si puede, formatee el archivo de datos para que coincida con la representación de coma flotante interna de la plataforma de destino, o al menos la representación de su programa. Esto reduce la sobrecarga de traducir la representación textual a la representación interna.
Omitir el sistema operativo y usar el controlador DMA para leer los datos del archivo, si es posible. El chip DMA toma la carga de leer datos en la memoria de los hombros del procesador.
Compacte su archivo de datos. El archivo de datos quiere estar en un conjunto contiguo de sectores en el disco. Esto reducirá la cantidad de tiempo dedicado a buscar diferentes áreas en los platos físicos.
¿Ha programado demanda de control exclusivo sobre el recurso de disco y los procesadores. Bloquea todas las demás tareas sin importancia; elevar la prioridad de la ejecución de su programa.
Utilice varios búferes para mantener el disco girando. Una gran parte del tiempo se usa para esperar a que el disco duro se acelere y desacelere. Su programa puede procesar los datos mientras que otra parte está almacenando los datos en un búfer, lo que lleva a ...
De múltiples hilos. Cree un hilo para leer en los datos y alertar a la tarea de procesamiento cuando el búfer no está vacío.
Esto debería mantenerte ocupado por un tiempo. Todas las otras optimizaciones darán lugar a ganancias de rendimiento insignificantes. (Por ejemplo, acceder directamente al controlador del disco duro para transferirlo a uno de sus buffers.)
Por favor, no etiquetar preguntas C++ como 'C'. Eso es simplemente molesto. –