Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.024 c
14-1093289489
wnew
2004-08-23 23:31
2004.09.12
Странные, светлые пятна на фотографиях.


14-1093508032
YurikGL
2004-08-26 12:13
2004.09.12
Кибертерроризм или бред Касперского


3-1092806200
segor
2004-08-18 09:16
2004.09.12
Быстрая очистка БД (IB)


3-1092359732
CRACKISH
2004-08-13 05:15
2004.09.12
Как проверить запрос на null


1-1093722914
UserUserov
2004-08-28 23:55
2004.09.12
случайные числа




   Наверх