Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-5026
DVM
2003-01-23 19:01
2003.02.03
Про память, хуки и указатели


1-4883
Ivan_73
2003-01-24 09:04
2003.02.03
Закрытие формы


1-4943
qwerty2
2003-01-26 14:12
2003.02.03
Помогите пожалуйста с написанием компонента!


8-5081
brestmarket
2002-10-18 02:59
2003.02.03
Как на Button нарисовать свою картинку и проиграть звук?


3-4719
Чайник
2003-01-18 13:36
2003.02.03
BLOBField и OLEContainer





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский