Compare commits
2 commits
9177f29308
...
42d8df9b85
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
42d8df9b85 | ||
|
|
dfd71354a2 |
2 changed files with 301 additions and 0 deletions
299
examples/benchmarks.pas
Normal file
299
examples/benchmarks.pas
Normal file
|
|
@ -0,0 +1,299 @@
|
||||||
|
{$H350}
|
||||||
|
program benchmarks;
|
||||||
|
var starttime:DateTime;
|
||||||
|
endtime:DateTime;
|
||||||
|
|
||||||
|
procedure startBench(name:string);
|
||||||
|
begin
|
||||||
|
write(name:35, ' ');
|
||||||
|
starttime := GetTime;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure endBench;
|
||||||
|
var secDelta, minDelta, hourDelta:integer;
|
||||||
|
procedure write2Digits(i:integer);
|
||||||
|
begin
|
||||||
|
if i < 10 then
|
||||||
|
write('0');
|
||||||
|
write(i);
|
||||||
|
end;
|
||||||
|
begin
|
||||||
|
endtime := GetTime;
|
||||||
|
|
||||||
|
hourDelta := endtime.hours - starttime.hours;
|
||||||
|
minDelta := endtime.minutes - starttime.minutes;
|
||||||
|
secDelta := endtime.seconds - starttime.seconds;
|
||||||
|
|
||||||
|
if secDelta < 0 then
|
||||||
|
begin
|
||||||
|
secDelta := 60 + secDelta;
|
||||||
|
minDelta := minDelta - 1;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if minDelta < 0 then
|
||||||
|
begin
|
||||||
|
minDelta := 60 + minDelta;
|
||||||
|
hourDelta := hourDelta - 1;
|
||||||
|
end;
|
||||||
|
|
||||||
|
write2Digits(hourDelta);
|
||||||
|
write(':');
|
||||||
|
write2Digits(minDelta);
|
||||||
|
write(':');
|
||||||
|
write2Digits(secDelta);
|
||||||
|
writeln;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure bench0;
|
||||||
|
var i:integer;
|
||||||
|
begin
|
||||||
|
startBench('empty loop 10M');
|
||||||
|
for i := 1 to 10000000 do;
|
||||||
|
endBench;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure bench1;
|
||||||
|
var i:integer;
|
||||||
|
v:integer;
|
||||||
|
begin
|
||||||
|
startBench('write variable 10M');
|
||||||
|
for i := 1 to 10000000 do
|
||||||
|
v := 0;
|
||||||
|
endBench;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure bench2;
|
||||||
|
var i:integer;
|
||||||
|
v,r:integer;
|
||||||
|
begin
|
||||||
|
v := 4711;
|
||||||
|
startBench('read variable 10M');
|
||||||
|
for i := 1 to 10000000 do
|
||||||
|
r := v;
|
||||||
|
endBench;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure bench3;
|
||||||
|
var i:integer;
|
||||||
|
a,b:integer;
|
||||||
|
begin
|
||||||
|
a := 0;
|
||||||
|
b := 100;
|
||||||
|
|
||||||
|
startBench('integer addition 10M');
|
||||||
|
for i := 1 to 10000000 do
|
||||||
|
a := b + i;
|
||||||
|
endBench;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure bench4;
|
||||||
|
var i:integer;
|
||||||
|
a,b:real;
|
||||||
|
begin
|
||||||
|
a := 0.0;
|
||||||
|
b := 100.0;
|
||||||
|
|
||||||
|
startBench('real addition 1M');
|
||||||
|
for i := 1 to 1000000 do
|
||||||
|
a := b + i;
|
||||||
|
endBench;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure bench5;
|
||||||
|
var i:integer;
|
||||||
|
a,b:integer;
|
||||||
|
begin
|
||||||
|
a := 0;
|
||||||
|
b := 100;
|
||||||
|
|
||||||
|
startBench('integer multiplication 1M');
|
||||||
|
for i := 1 to 1000000 do
|
||||||
|
a := b * i;
|
||||||
|
endBench;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure bench6;
|
||||||
|
var i:integer;
|
||||||
|
a,b:real;
|
||||||
|
begin
|
||||||
|
a := 0;
|
||||||
|
b := 100;
|
||||||
|
|
||||||
|
startBench('real multiplication 1M');
|
||||||
|
for i := 1 to 1000000 do
|
||||||
|
a := b * i;
|
||||||
|
endBench;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure bench7;
|
||||||
|
var i:integer;
|
||||||
|
a,b:integer;
|
||||||
|
begin
|
||||||
|
a := 0;
|
||||||
|
b := 31415926;
|
||||||
|
|
||||||
|
startBench('integer division 1M');
|
||||||
|
for i := 1 to 1000000 do
|
||||||
|
a := b div i;
|
||||||
|
endBench;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure bench8;
|
||||||
|
var i:integer;
|
||||||
|
a,b,c:real;
|
||||||
|
begin
|
||||||
|
a := 0;
|
||||||
|
b := 31415926.0;
|
||||||
|
|
||||||
|
startBench('real division 1M');
|
||||||
|
for i := 1 to 1000000 do
|
||||||
|
a := b / i;
|
||||||
|
endBench;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure bench9;
|
||||||
|
var i,j:integer;
|
||||||
|
s:string[100];
|
||||||
|
c:char;
|
||||||
|
begin
|
||||||
|
s := '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmn0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmn';
|
||||||
|
|
||||||
|
startBench('string indexing 1M');
|
||||||
|
for i := 1 to 100000 do
|
||||||
|
for j := 1 to 100 do
|
||||||
|
c := s[j];
|
||||||
|
endBench;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure bench10;
|
||||||
|
var i:integer;
|
||||||
|
s:string[100];
|
||||||
|
c,d:char;
|
||||||
|
begin
|
||||||
|
s := '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmn0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmn';
|
||||||
|
|
||||||
|
startBench('string iteration 1M');
|
||||||
|
for i := 1 to 100000 do
|
||||||
|
for c in s do
|
||||||
|
d := c;
|
||||||
|
endBench;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure bench11;
|
||||||
|
var ptr: ^array[0..255] of integer;
|
||||||
|
dummy1,dummy2,dummy3: ^array[0..127] of boolean;
|
||||||
|
i:integer;
|
||||||
|
begin
|
||||||
|
new(dummy1);
|
||||||
|
new(dummy2);
|
||||||
|
new(dummy3);
|
||||||
|
dispose(dummy1);
|
||||||
|
|
||||||
|
startBench('new/dispose 1k 1M');
|
||||||
|
for i := 1 to 1000000 do
|
||||||
|
begin
|
||||||
|
new(ptr);
|
||||||
|
dispose(ptr);
|
||||||
|
end;
|
||||||
|
endBench;
|
||||||
|
|
||||||
|
dispose(dummy2);
|
||||||
|
dispose(dummy3);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure bench12;
|
||||||
|
var ptr: ^array[0..32767] of integer;
|
||||||
|
dummy1,dummy2,dummy3: ^array[0..127] of boolean;
|
||||||
|
i:integer;
|
||||||
|
begin
|
||||||
|
new(dummy1);
|
||||||
|
new(dummy2);
|
||||||
|
new(dummy3);
|
||||||
|
dispose(dummy1);
|
||||||
|
|
||||||
|
startBench('new/dispose 128k 1M');
|
||||||
|
for i := 1 to 1000000 do
|
||||||
|
begin
|
||||||
|
new(ptr);
|
||||||
|
dispose(ptr);
|
||||||
|
end;
|
||||||
|
endBench;
|
||||||
|
|
||||||
|
dispose(dummy2);
|
||||||
|
dispose(dummy3);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure bench13;
|
||||||
|
var ptr1: ^array[0..255] of integer;
|
||||||
|
ptr2: ^array[0..255] of integer;
|
||||||
|
i:integer;
|
||||||
|
begin
|
||||||
|
new(ptr1);
|
||||||
|
new(ptr2);
|
||||||
|
startBench('array copy 1k 10K');
|
||||||
|
for i := 1 to 10000 do
|
||||||
|
ptr1^ := ptr2^;
|
||||||
|
endBench;
|
||||||
|
dispose(ptr1);
|
||||||
|
dispose(ptr2);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure bench14;
|
||||||
|
var ptr1: ^array[0..32767] of integer;
|
||||||
|
ptr2: ^array[0..32767] of integer;
|
||||||
|
i:integer;
|
||||||
|
begin
|
||||||
|
new(ptr1);
|
||||||
|
new(ptr2);
|
||||||
|
startBench('array copy 128k 1K');
|
||||||
|
for i := 1 to 1000 do
|
||||||
|
ptr1^ := ptr2^;
|
||||||
|
endBench;
|
||||||
|
dispose(ptr1);
|
||||||
|
dispose(ptr2);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure bench15;
|
||||||
|
var i,j:integer;
|
||||||
|
a:real;
|
||||||
|
begin
|
||||||
|
startBench('exp() 10K');
|
||||||
|
for i := 1 to 1000 do
|
||||||
|
for j := 1 to 10 do
|
||||||
|
a := exp(j);
|
||||||
|
endBench;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure bench16;
|
||||||
|
var i,j:integer;
|
||||||
|
a,b:real;
|
||||||
|
begin
|
||||||
|
startBench('cos() 10K');
|
||||||
|
b := 0.0;
|
||||||
|
for i := 1 to 10000 do
|
||||||
|
begin
|
||||||
|
a := cos(b);
|
||||||
|
b := b + 0.0001;
|
||||||
|
end;
|
||||||
|
endBench;
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
bench0;
|
||||||
|
bench1;
|
||||||
|
bench2;
|
||||||
|
bench3;
|
||||||
|
bench4;
|
||||||
|
bench5;
|
||||||
|
bench6;
|
||||||
|
bench7;
|
||||||
|
bench8;
|
||||||
|
bench9;
|
||||||
|
bench10;
|
||||||
|
bench11;
|
||||||
|
bench12;
|
||||||
|
bench13;
|
||||||
|
bench14;
|
||||||
|
bench15;
|
||||||
|
bench16;
|
||||||
|
end.
|
||||||
|
|
@ -578,6 +578,8 @@ def create_image_with_stuff():
|
||||||
slotnr = putfile("../examples/shinkansen.pict", "shinkansen.pict" , f, part, partstart, slotnr)
|
slotnr = putfile("../examples/shinkansen.pict", "shinkansen.pict" , f, part, partstart, slotnr)
|
||||||
slotnr = putfile("../examples/snow_leopard.pict", "snow_leopard.pict" , f, part, partstart, slotnr)
|
slotnr = putfile("../examples/snow_leopard.pict", "snow_leopard.pict" , f, part, partstart, slotnr)
|
||||||
|
|
||||||
|
slotnr = putfile("../examples/benchmarks.pas", None , f, part, partstart, slotnr)
|
||||||
|
|
||||||
listdir(f, part)
|
listdir(f, part)
|
||||||
|
|
||||||
write_bootimage(f, 16, bootdata)
|
write_bootimage(f, 16, bootdata)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue