Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.12;
Скачать: CL | DM;

Вниз

сравнение по скорости   Найти похожие ветки 

 
wild_arg ©   (2004-08-25 09:10) [0]

Народ, как вы думаете, что будет быстрее работать?
AssignFile(f, FileName);
Reset (f, 16384);
BlockRead (F, PBuffer^, 1, dummy);

или  
AssignFile(f, FileName);
Reset (f, 1);
BlockRead (F, PBuffer^, 16384, dummy);


Иными словами, что быстрее, прочитать один блок размером 16K или 16K блоков по 1 байту?


 
КаПиБаРа ©   (2004-08-25 09:13) [1]

И к бабке не надо ходить... конечно один блок размером 16K.


 
han_malign ©   (2004-08-25 10:03) [2]

>Иными словами, что быстрее, прочитать один блок размером 16K или 16K блоков по 1 байту?
- в данном случае, и в том и в другом варианте, читается "один блок размером 16К"... А размер "записи" никаким боком к размеру блока не лежит.

function _BlockRead(var f: TFileRec; buffer: Pointer; recCnt: Longint; var recsRead: Longint): Longint;
begin
 Result := BlockIO(f, buffer, recCnt, recsRead, fmInput,
   {$IFDEF MSWINDOWS} ReadFileX, {$ENDIF}
   {$IFDEF LINUX} __read, {$ENDIF}
   100);
end;

function BlockIO(var f: TFileRec; buffer: Pointer; recCnt: Cardinal; var recsDone: Longint;
 ModeMask: Integer; IOProc: TIOProc; ErrorNo: Integer): Cardinal;
// Note:  RecsDone ptr can be nil!
begin
 if (f.Mode and ModeMask) = ModeMask then  // fmOutput or fmInOut / fmInput or fmInOut
 begin
{$IFDEF LINUX}
   Result := IOProc(f.Handle, buffer, recCnt * f.RecSize);
   if Integer(Result) = -1 then
{$ENDIF}
{$IFDEF MSWINDOWS}
   if IOProc(f.Handle, buffer, recCnt * f.RecSize, Result, nil) = 0 then
{$ENDIF}
.............
.............
function ReadFileX(hFile: Integer; Buffer: Pointer; nNumberOfBytesToRead: Cardinal;
 var lpNumberOfBytesRead: Cardinal; lpOverlapped: Pointer): Integer; stdcall;
 external kernel name "ReadFile";

function __read(Handle: Integer; Buffer: Pointer; Count: Cardinal): Cardinal; cdecl;
 external libc name "read";



 
Wild Sam   (2004-08-26 00:52) [3]

Классный ответ, han-malign, спасибо!



Страницы: 1 вся ветка

Текущий архив: 2004.09.12;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.045 c
4-1091081974
shvez_igor
2004-07-29 10:19
2004.09.12
Управления Фотошопом в програме на Делфи


4-1090878975
g-l-u-k
2004-07-27 01:56
2004.09.12
Сравнение файлов на winapi и поиск различий


14-1093342992
IGray
2004-08-24 14:23
2004.09.12
Где можно скачать Update Delphi 7.0 --> Delphi 7.1 ???


14-1093103407
QuasiLamo
2004-08-21 19:50
2004.09.12
База слов из MSWord


10-1015848534
m.r. sender
2002-03-11 15:08
2004.09.12
CORBA через модем