Конечно, и я уже лет так 30 не видел, чтобы для увеличения скорости на асме винтом управляли :)
Но это уже клинический оффтопик. На файлах такого малого размера на обычном винчестере (7200 об/мин) всё быстро выполняется, даже быстрый винт не нужен. Но конечно желать можно и большего. :)
UpdUPD нужно использовать 64-битные целые в качестве смещений в файле и соответствующую функцию поиска:
https://docs../fseek-fseeki64 Под Линуксом long int и так 64-битный, но лучше сначала проверить для конкретного компилятора. напечатав sizeof(long).
Да, желательно проверить для конкретного компилятора. В Borland Delphi Longint 32 битное. В Embarcadero Delphi Integer — 32-битное и для 32-битного кода, и для 64-битного:
procedure Seek(var F: File; N: Integer)
Integer represents a subset of the integer numbers. The range for the Integer type is from -2147483648 through 2147483647.
The size of Integer is 32 bits across all 64-bit and 32-bit platforms.
LongInt represents a subset of the natural numbers. LongInt size and range depend on the target platform:
On 32-bit platforms and 64-bit Windows platforms, LongInt is an 4-byte signed integer with the range [-2147483648 .. 2147483647]. (
through
).
Note: 32-bit platforms include 32-bit Windows, 32-bit macOS, 32-bit iOS, and Android.
On 64-bit POSIX platforms (iOS and Linux), LongInt is an 8-byte signed integer with the range [-9223372036854775808 .. 9223372036854775807] (
through
).
— это опечатка в справке в Сети.
procedure Seek(var f: file; Pos: Int64)
type Longint =- 2147483648..2147483647
Но справке ни Embarcadero, ни freepascal я особо не верю. С Embarcadero влетал. :) Надо проверять. :)