Главная страница
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.023 c
4-1090486416
parovoZZ
2004-07-22 12:53
2004.09.12
Win98 и Delphi7


1-1093859074
Uran
2004-08-30 13:44
2004.09.12
Подскажите оптимальный и надежный алторитм по криптованию строки


1-1093886760
Lord de Mon
2004-08-30 21:26
2004.09.12
Разделение строки


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


3-1092660007
Вика
2004-08-16 16:40
2004.09.12
Установка курсора ...