| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Ускорение работы программы |
| Автор: Pavelo 17.8.2008, 22:34 | ||||
| Есть две небольших программы в среде Borland Builder 5. Первая для посимвольного искажения выбранного файла с заданной вероятностью P:
countBytes=8; blocksize=1000000; fin - исходный файл; fout - искаженный файл. Вторая программа для сравнения двух файлов:
countBytes=8; blocksize=1000000; firstfile - первый файл; secondfile - второй файл. Размеры файлов примерно 1 Гбайт. Вопрос вот в чем. Первая программа обрабатывает файл со скоростью 20мбайт/c, а вторая почему-то со скоростью 2мбайт/c. Откуда берется такая большая разница? Как можно ускорить работу программы по сравнению двух файлов? |
| Автор: jonie 17.8.2008, 22:53 | ||
| вторая вообще не рабочая. читаете с одного и того же файла:
ну а вообще это нормальная ситуация: головкам диска нужно время чтобы переместиться с одного фала на другой.... один из самых быстрых методов (исклюая экзотику) это проецирование файлов в память... и 8 мегабайт небольшой буфер.. берите сразу мегабайт 23-32... ускорение как всегда стандартно: либо больше жрете памяти, либо много обращений к файлам (не забываем и про то что винда имеет свойство свопить что нужно и что ненужно...).. |
| Автор: Pavelo 17.8.2008, 23:11 | ||||||||
тестил прогу, измененный вариант запостил Правильно так:
Но разве в первом случае не аналогичная ситуация? ведь в теле цикла сначала идет fread(ptr,countBytes,blocksize,fin); и после этого fwrite(ptr,countBytes,res,fout); |