![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
вообщем вопрос, как повысить скорость чтения инфы из файла (данные в файле значение неимееют) в переменную ТИПА int, dword.
ибо скорость в 6 Мбайт в минуту ))))) конечно.... |
|
#2
|
|||
|
|||
|
Дык ты код покажи сначала.
Хотя... 6 МБ в МИНУТУ - это у тебя тогда явные проблемы с железом... |
|
#3
|
|||
|
|||
|
)))))))))))))))))))))))))))))))))))))))
вопрос вот именно в этом как повысить скорость чтения инфы из файла (данные в файле значение неимееют) в переменную ТИПА int, dword. )))))))))) P.S. с железом как раз все в порядке. Код:
var
NumRead1, NumRead2, NumWritten: Integer;
Buf: Byte;
x, y, z: Byte;
y1 : array [0..511] of byte;
n, max, i: Integer;
I1: Integer;
m: array[1..3] of Integer;
Stream1, stream2 : TFileStream;
begin
m[1]:=0;
if OpenDialog1.Execute then
begin
Stream1:=TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
m[1]:=Stream1.Size;
Stream1.Seek(0, soFromBeginning);
end;
.....
For I:=0 to n1-1 do // цикл на количество секторов
begin
for i1:=0 to 511 do // побайтно внутри сектора
begin
Stream1.ReadBuffer(x, sizeof(x)); // считывание байта () из файла в переменную типа byte
.........
z:=x xor y;
.........
stream2.WriteBuffer(z, sizeof(z)); // запись () в файл в переменной типа byte
Position := i;
end;
end;
end;
...
END;тормозит именно ЭТО! - stream2.WriteBuffer(z, sizeof(z)); // запись байта () в файл в переменной типа byte Stream1.ReadBuffer(x, sizeof(x)); // считывание байта () из файла в переменную типа byte может ктото знает другой тип переменной ну.. скажем типа hex? или некий 16 - ричный тип переменных? |
|
#4
|
||||
|
||||
|
А обязятельно побайтно читать? Прочитай 512 байт сразу, сделай с ними что-нить и запиши обратно. Будет в 512 раз быстрее
![]() |
|
#5
|
|||
|
|||
|
хм... а тип целого числа розмерносьтю в 512 байт неподскажеш?
))))))))) в чьом проблема? проблема в том, чтобы зделать z:=x xor y; ))) а оно - только с целочисленными данными!!! ну.... понятно, там таблица анси символов и прочее... неважно. важно результот, который аж... аж .. 6 Мб/ мин. ))))))))) |
|
#6
|
|||
|
|||
|
Читай в PChar, потом работай внутри него.
Собственно, в свое время именно таким образом у меня был построен поиск в одной программе. Она читала файл блоками по 64К и работала внутри них. Там правда было чуть сложнее, т.к. приходилось хитрым образом обрабатывать вариант, когда искомая строка находилась на границе блока. |