(Это не моя программа, но я постараюсь предоставить всю необходимую информацию, насколько мне известно.)
Есть программа, которая читает двоичные файлы размером примерно 300 МБ.обрабатывает их и выводит некоторую информацию.Программа использует ifstream для ввода файлов, и потоки правильно инициализируются и закрываются для каждого чтения.
Программа должна прочитать каждый файл несколько раз.Первое чтение файла занимает около 3 секунд, а каждое последующее чтение занимает около 0,1 секунды.Если обработано несколько файлов, возврат к первому файлу все равно приведет к высокой скорости чтения, но через некоторое время повторное чтение файла станет медленным.
Кроме того, если файл копируется в другое место, скоростьпервого чтения нового файла примерно 0,1 секунды.
Если вы выполняете математические вычисления, скорость последовательных чтений примерно равна заявленной скорости чтения жесткого диска.
Все это выглядитнапример, расположение файлов кэшируется операционной системой или жестким диском, поэтому при последовательных чтениях вам не нужно искать расположения файлов.
Кто-нибудь знает, что именно вызывает замедление при первоначальном чтении,а можно ли это предотвратить?Три секунды могут показаться не слишком большими, но они добавляют около 5 часов к общему времени, необходимому для правильной обработки каждого файла.
Кроме того, программа работает на Fedora 14 и Scientific Linux, причем обе ОС имеют свои настройки по умолчанию.файловые системы.
Буду признателен за любые идеи.