Ваше узкое место в I / O.Вы хотите, чтобы программа считывала как можно больше данных в память за наименьшее количество вызовов ввода-вывода.Например, чтение 256 чисел с одним fread
быстрее, чем 256 fread
одного числа.
Если вы можете отформатировать файл данных, чтобы он соответствовал внутреннему представлению с плавающей запятой целевой платформы или, по крайней мере, представлению вашей программы.Это снижает накладные расходы на перевод текстового представления во внутреннее представление.
Обходите ОС и, если возможно, используйте контроллер DMA для считывания данных файла.Чип DMA снимает с себя нагрузку чтения данных в память.
Сжатие файла данных.Файл данных хочет быть в одном непрерывном наборе секторов на диске.Это сократит время, затрачиваемое на поиск в разных областях физических платформ.
Требует ли ваша программа исключительного контроля над дисковым ресурсом и процессорами.Блокировать все другие неважные задачи;Повысьте приоритет выполнения вашей программы.
Используйте несколько буферов, чтобы диск вращался.Большая часть времени уходит на ожидание ускорения и замедления жесткого диска.Ваша программа может обрабатывать данные, в то время как что-то еще сохраняет данные в буфере, что приводит к ...
Многопоточности.Создайте один поток для чтения данных и предупредите задачу обработки, когда буфер не пуст.
Это должно занять вас некоторое время.Все другие оптимизации приведут к незначительному увеличению производительности.(Например, прямой доступ к контроллеру жесткого диска для передачи в один из ваших буферов.)