level 8
const b:array[1..10]of string=('Byte','KB','MB','GB','TB','PB','EB','ZB','YB','BB');
var st:array[1..1000000]of ansistring;
f:array[1..1000000]of text;
s3:string;
c:char;
i,j,ls:longint;
h,m,s,hs,h2,m2,s2,hs2:word;
time,speed:real;
procedure start;
begin
clrscr;
writeln('要测试哪个设备?请键下字母。');
c:=readkey;
writeln('要测试几轮(4KB一轮,越大越准,还可以避免除零Bug,但小于1000000)?请输入数:');
readln(ls);
writeln('初始化写······');
for i:=1 to ls do begin
st[i]:='';
for j:=1 to 4096 do st[i]:=st[i]+chr(random(256));
str(i,s3);
s3:=c+':\file'+s3;
assign(f[i],s3);
rewrite(f[i]);
end;
writeln('测试写速度······共',ls,'轮,4KB一轮。');
gettime(h,m,s,hs);
for i:=1 to ls do write(f[i],st[i]);
gettime(h2,m2,s2,hs2);
time:=(h2-h)*360+(m2-m)*60+(s2-s)+(hs2-hs)/1000;
speed:=4096*ls/time;
i:=1;
while (speed>1023)and(i<10) do begin
inc(i);
speed:=speed/1024;
end;
writeln(c,'的写速度为',speed:0:1,b[i],'/秒。');
writeln('初始化读······');
for i:=1 to ls do begin
close(f[i]);
str(i,s3);
s3:=c+':\file'+s3;
assign(f[i],s3);
reset(f[i]);
end;
writeln('测试读速度······共',ls,'轮,4KB一轮。');
gettime(h,m,s,hs);
for i:=1 to ls do read(f[i],st[i]);
gettime(h2,m2,s2,hs2);
time:=(h2-h)*360+(m2-m)*60+(s2-s)+(hs2-hs)/1000;
speed:=4096*ls/time;
i:=1;
while (speed>1023)and(i<10) do begin
inc(i);
speed:=speed/1024;
end;
writeln(c,'的读速度为',speed:0:1,b[i],'/秒。');
writeln('测试删除速度······共',ls,'轮,4KB一轮。');
gettime(h,m,s,hs);
for i:=1 to ls do begin
close(f[i]);
str(i,s3);
s3:=c+':\file'+s3;
assign(f[i],s3);
erase(f[i]);
end;
gettime(h2,m2,s2,hs2);
time:=(h2-h)*360+(m2-m)*60+(s2-s)+(hs2-hs)/1000;
speed:=4096*ls/time;
i:=1;
while (speed>1023)and(i<10) do begin
inc(i);
speed:=speed/1024;
end;
writeln(c,'的删除速度为',speed:0:1,b[i],'/秒。');
readln;
clrscr;
end;
begin
randomize;
clrscr;
while true do begin
writeln('设备读写速度测试');
writeln('开 始(1)');
writeln('退 出(2)');
c:=readkey;
while pos(c,'12')=0 do c:=readkey;
case c of
'1':start;
'2':halt;
end;
end;
end.
含有单位自动换算、crt、文件操作、获取系统时间。
新手可以学到很多东西(是吗?