![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поделитесь кодом а :))) [D5]
Русский © (2001-11-12 14:22:00)Подскажите пожалуйста, ну самый - самый быстрый способ прочитать несколько байт из файла в буфер.
Exception (2001-11-14 10:07:00) [1]Вообще, начиная с определенного размера блока, размер блока не должен играть существенной роли - во первых, сейчас в Win2K/XP очень эффективно реализовано упреждающее чтение, а во вторых, практически все равно, сколько секторов читать за раз, если читаем болше секторов, чем на 1 дорожке - все равно, время перехода с дорожки на дорожку будет сравнимо или больше времени, потраченным на чтение. Так что читай килобайта по 64 - и все будет ОК.
Vitaly Nevzorov (2001-11-13 21:56:00) [2]Когда-то была у меня проблема писать в файл с максимальной скоростью и я проводил измерение быстродействия разных способов (это было на Win 95/ Delhpi 3). Быстрее всего оказалось BlockRead-BlockWrite - при тщательно подобранном размере буфера (на тот момент на моем железе это было что-то между 64k и 512 kb), на втором месте оказалась работа через TFileStream, который впрочем довольно сильно отставал если надо было писать небольшими порциями. Потом шли виндовские функции чтения файла и соответствующие бормандовские (через OpenFile/FileOpen), на последнем месте - read/write. Данное исследование не претендует на универсальность, так как много воды утекло, уже мало у кого 95 винды встретишь и железо такое...
Марат (2001-11-13 13:09:00) [3]С точки зрения затрат времени
лучше всего читать один блок
например для NTFS по умолчанию размер блока равен 512
а еще есть параметры блочного чтения HDD,
размер кэша,
драйвер ОС ...
Коляныч (2001-11-13 10:14:00) [4]Быстрее будет прочитать все 256 байт и потом их перекодировать
Русский (2001-11-13 10:04:00) [5]Слушай 33, во первых спасибо, что отозвался.
Во - вторых: вопрос ? Я делаю Hex - редактор (уж очень люблю всё ломать)
и вот мне нужно прочитать страницу 256 байт (соответственно 16 байт в
строке x 16 строк). Так вот как сделать быстрее читать по 16 байт,
перекодировать и выводить, или сразу прочесть 256 байт, потом
перекодировать и выводить. Как лучше?
Никто (2001-11-13 03:21:00) [6]SCSI
33 (2001-11-13 02:12:00) [7]А насчет быстроты это не только от программы зависит.
Сделай виртуальный диск и самая медленная программа на виртуальном
диске в памяти будет читать файлы быстрее, чем самая быстрая на винте.
Кроме того есть такое слово Кеш, упреждающее чтение, фрагментация и т.д
33 (2001-11-13 02:06:00) [8]Общая схема
Читаем первые 5 байт
var FHandle:Integer;
Buf:array[1..5] of byte;
begin
FHandle := FileOpen(name, fmOpenRead); //Открываем
FileSeek(FHandle,0,0); //устанавливаем указатель
FileRead(FHandle, Buf,5); //читаем в массив
А с буфером непонятно.
Тебе какой нужен? Буфер обмена Windows7