Форум: "Основная";
Текущий архив: 2003.02.03;
Скачать: [xml.tar.bz2];
ВнизКак прочитать текстовый файл быстрей чем Reset() .. ReadLn() ? Найти похожие ветки
← →
Song (2003-01-25 17:30) [0]Приветствую, мастаков!
У меня есть проблемка. Надо читать большой текстовый файл (мегабайт на 20-50).
Как это можно сделать быстрей чем ReadLn() ?
Пробовал списки - дольше. Провал производные от TStream, тормозит то, что внутри них надо вручную отделять строки по считанным байтам.
Вообщем кто может сталкивался, как быстро прочитать файл?
← →
Palladin (2003-01-25 17:42) [1]купи быстрый винт и компутер помощней
← →
mrcat (2003-01-25 17:57) [2]Song © (25.01.03 17:30)
...
Надо читать большой текстовый файл (мегабайт на 20-50).
...
Читай проекцией в память...быстрей ReadLn()одназначно =)
← →
Palladin (2003-01-25 18:23) [3]При чтении строк из файла к просто чтению с диска прибавляется ессно обработка на встречу пары #10#13.
Я не сравнивал скорости работы BlockRead и FileRead.
Попробуй реализовать через BlockRead и разделяй на строки своей функцией. а TStringList работает с FileRead, TStringList юзает TFileStream, которой через FileRead и работает. Хотя сомневаюсь что будет быстрее...
А функцию встречи #10#13 на асме писани :)
← →
Anatoly Podgoretsky (2003-01-25 18:41) [4]Проверка на моем компьютере (650 мгц) на файле 36 мб, 300000 строк для ReadLn дала чтение за 6 секунд, для загрузки в TStringList чуть быстрее 5 и 1.5 сек (второе чтение из кеша)
Выигрывая в скорости чтения, проиграешь в разборке на строки
← →
MBo (2003-01-25 21:37) [5]>Надо читать большой текстовый файл
ИМХО, ты недопоставил задачу - просто "читать файл" само по себе бессмысленно, нужно знать желаемый результат, цель, от нее и зависят возможные способы реализации, Memory Mapped Files или что-то другое.
← →
Song (2003-01-26 12:00) [6]Надо читать файл и искать данные, т.е. сейчас выглядит так:
...
While not Eof(ff) Do
Begin
ReadLn(ff,S);
IF S=" "... или IF Pos("...",S)>0 ну и т.д.
...
End;
....
при нахождении данных они читаются в список, а потом отображаются в дереве.
На моей машине всё Ok, 40 меговый файл с поиском последней строчки за 8 сек., но там где предполагается использовать программу вовсе не такие крутые компы, вот и появился такой вопрос.
А насчёт memory-mapped файлов - не силён. Подмогите кто примером...
← →
gsu (2003-01-26 12:07) [7]createfilemapping
mapviewoffile
unmapvievoffile
На счет скорости сам бы хотел узнать
← →
gsu (2003-01-26 12:09) [8]+closehandle (-:|~
← →
Sha (2003-01-26 12:18) [9]У меня юнит большой. Давай мыло.
← →
gsu (2003-01-26 12:20) [10]И мне (-:|~
← →
Sha (2003-01-26 12:24) [11]Куда? :)
← →
Song (2003-01-26 12:26) [12]2Sha © (26.01.03 12:18)
coolsong@mail.ru
← →
Anatoly Podgoretsky (2003-01-26 12:29) [13]Song © (26.01.03 12:00)
У тебя явно основная нагрузка не на файловые операции, а на обработку считанных данных, а тут уже без почти разницы какой метод доступа, основное будет зависить от того сколько оперативной памяти и какой процессор.
В твоем случае просто желательно протести натурные испытания на машинах близких по конфигурации к используемым.
Частично снизить последствия слабых машин можно визуальными методами, процесс обработки данных должен быть видимым пользователю, тогда даже дополнительное торможение за счет визуализации не страшно, пользователь будет видеть что процесс идет. Что бы сильно не перегружать систему, достаточно индицировать количество обрабаботаных строк и пользователю будет приятно и он видит, что идет ОГРОМНАЯ работа и она действительно требует много времени. А при этих размерах, это где то от 100 до 500 тысяч строк.
Можно еще что нибудь индицировать, характерное для файла, лишь бы оно не было большим, например количество строк, удовлетрворяющих условию или ИД.
← →
Sha (2003-01-26 12:30) [14]2Song © (26.01.03 12:26)
послал
← →
gsu (2003-01-26 12:33) [15]спасибо, хоть сказали бы что-нить
← →
Sha (2003-01-26 12:37) [16]2gsu © (26.01.03 12:33)
Куда слать-то? :)
← →
gsu (2003-01-26 12:39) [17]gsu@mosk.ru
Заранее спасибо, убегаю ...
← →
Sha (2003-01-26 12:42) [18]2gsu © (26.01.03 12:39)
послал
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.02.03;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.008 c