![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Самый быстрый способ считать маленький файл в строку
Nucer © (2011-10-13 15:59:00)Подскажите самый быстрый способ считать файл в RawByteString. Необходимо обрабатывать около 50 тысяч файлов размеров в 100-200 килобайт.
При таком варианте только на чтение без обработки уходит минут 5:
var
S: RawByteString;
F: File;
Size: Int64;
begin
AssignFile(F, Filename);
Reset(F, 1);
Size := FileSize(F);
Reset(F, Size);
SetLength(S, Size);
BlockRead(F, S[1], 1);
CloseFile(F);
end;
Омлет (2011-10-13 16:15:00) [61]И не надо вызывать FileSize, почитай справку по BlockRead.
Омлет (2011-10-13 16:11:00) [62]> Nucer (13.10.11 15:59)
Ты выделяешь память под каждый файл, а потом освобождаешь. А можно выделить один раз большой буфер и с ним работать. И не завязывайся на строки (что такое RawByteString?), работай напрямую с памятью через указатели.
Омлет (2011-10-13 16:07:00) [63]> Плохиш © (13.10.11 16:02) [1]
> TFileStream
Ага, как будто он вызывает какую-то другую функцию для чтения файла (ReadFile).
Плохиш (2011-10-13 16:02:00) [64]TFileStream