SRI Ada tasking benchmarks - part 2 of 3
Joe Orost
joe at petsd.UUCP
Thu Dec 13 01:25:38 AEST 1984
<>
#!/bin/sh
cat >idle1.ada <<'------ EOF ------'
-- ada tasking tester
-- task head is the controller
-- tasks link are the chain of tasks
-- tasks idle are the standby tasks
with text_io; use text_io;
procedure test is
cycles: integer;
printon: boolean;
answer: character;
task head is
entry give;
end head;
task link1 is
entry give;
end link1;
task idle1 is
entry init;
entry never;
end idle1;
task body head is
begin
idle1.init;
put("do you want printing (y/n)? ");
get(answer);
put("answer is "); put(answer); put_line(" ");
if answer='y' then
printon := true;
else
printon := false;
end if;
if printon then put_line("printing on"); else put_line("print off");
end if;
put("how many cycles? ");
-- doesn't work get_line(cycles);
cycles := 10000;
put_line("started");
for i in 1..cycles loop
if printon then put_line("head"); end if;
link1.give;
accept give do
null;
end give;
end loop;
put_line("ended");
end head;
task body link1 is
begin
loop
accept give do
null;
end give;
if printon then put_line("link1"); end if;
head.give;
end loop;
end link1;
task body idle1 is
begin
accept init do put_line("idle1"); end init;
accept never do null; end never;
end idle1;
begin
null;
end test;
------ EOF ------
ls -l idle1.ada
cat >idle10.ada <<'------ EOF ------'
-- ada tasking tester
-- task head is the controller
-- tasks link are the chain of tasks
-- tasks idle are the standby tasks
with text_io; use text_io;
procedure test is
cycles: integer;
printon: boolean;
answer: character;
task head is
entry give;
end head;
task link1 is
entry give;
end link1;
task idle1 is
entry init;
entry never;
end idle1;
task idle2 is
entry init;
entry never;
end idle2;
task idle3 is
entry init;
entry never;
end idle3;
task idle4 is
entry init;
entry never;
end idle4;
task idle5 is
entry init;
entry never;
end idle5;
task idle11 is
entry init;
entry never;
end idle11;
task idle12 is
entry init;
entry never;
end idle12;
task idle13 is
entry init;
entry never;
end idle13;
task idle14 is
entry init;
entry never;
end idle14;
task idle15 is
entry init;
entry never;
end idle15;
task body head is
begin
idle1.init;
idle2.init;
idle3.init;
idle4.init;
idle5.init;
idle11.init;
idle12.init;
idle13.init;
idle14.init;
idle15.init;
put("do you want printing (y/n)? ");
get(answer);
put("answer is "); put(answer); put_line(" ");
if answer='y' then
printon := true;
else
printon := false;
end if;
if printon then put_line("printing on"); else put_line("print off");
end if;
put("how many cycles? ");
-- doesn't work get_line(cycles);
cycles := 10000;
put_line("started");
for i in 1..cycles loop
if printon then put_line("head"); end if;
link1.give;
accept give do
null;
end give;
end loop;
put_line("ended");
end head;
task body link1 is
begin
loop
accept give do
null;
end give;
if printon then put_line("link1"); end if;
head.give;
end loop;
end link1;
task body idle1 is
begin
accept init do put_line("idle1"); end init;
accept never do null; end never;
end idle1;
task body idle2 is
begin
accept init do put_line("idle2"); end init;
accept never do null; end never;
end idle2;
task body idle3 is
begin
accept init do put_line("idle3"); end init;
accept never do null; end never;
end idle3;
task body idle4 is
begin
accept init do put_line("idle4"); end init;
accept never do null; end never;
end idle4;
task body idle5 is
begin
accept init do put_line("idle5"); end init;
accept never do null; end never;
end idle5;
task body idle11 is
begin
accept init do put_line("idle11"); end init;
accept never do null; end never;
end idle11;
task body idle12 is
begin
accept init do put_line("idle12"); end init;
accept never do null; end never;
end idle12;
task body idle13 is
begin
accept init do put_line("idle13"); end init;
accept never do null; end never;
end idle13;
task body idle14 is
begin
accept init do put_line("idle14"); end init;
accept never do null; end never;
end idle14;
task body idle15 is
begin
accept init do put_line("idle15"); end init;
accept never do null; end never;
end idle15;
begin
null;
end test;
------ EOF ------
ls -l idle10.ada
cat >idle20.ada <<'------ EOF ------'
-- ada tasking tester
-- task head is the controller
-- tasks link are the chain of tasks
-- tasks idle are the standby tasks
with text_io; use text_io;
procedure test is
cycles: integer;
printon: boolean;
answer: character;
task head is
entry give;
end head;
task link1 is
entry give;
end link1;
task idle1 is
entry init;
entry never;
end idle1;
task idle2 is
entry init;
entry never;
end idle2;
task idle3 is
entry init;
entry never;
end idle3;
task idle4 is
entry init;
entry never;
end idle4;
task idle5 is
entry init;
entry never;
end idle5;
task idle11 is
entry init;
entry never;
end idle11;
task idle12 is
entry init;
entry never;
end idle12;
task idle13 is
entry init;
entry never;
end idle13;
task idle14 is
entry init;
entry never;
end idle14;
task idle15 is
entry init;
entry never;
end idle15;
task idle21 is
entry init;
entry never;
end idle21;
task idle22 is
entry init;
entry never;
end idle22;
task idle23 is
entry init;
entry never;
end idle23;
task idle24 is
entry init;
entry never;
end idle24;
task idle25 is
entry init;
entry never;
end idle25;
task idle211 is
entry init;
entry never;
end idle211;
task idle212 is
entry init;
entry never;
end idle212;
task idle213 is
entry init;
entry never;
end idle213;
task idle214 is
entry init;
entry never;
end idle214;
task idle215 is
entry init;
entry never;
end idle215;
task body head is
begin
idle1.init;
idle2.init;
idle3.init;
idle4.init;
idle5.init;
idle11.init;
idle12.init;
idle13.init;
idle14.init;
idle15.init;
idle21.init;
idle22.init;
idle23.init;
idle24.init;
idle25.init;
idle211.init;
idle212.init;
idle213.init;
idle214.init;
idle215.init;
put("do you want printing (y/n)? ");
get(answer);
put("answer is "); put(answer); put_line(" ");
if answer='y' then
printon := true;
else
printon := false;
end if;
if printon then put_line("printing on"); else put_line("print off");
end if;
put("how many cycles? ");
-- doesn't work get_line(cycles);
cycles := 10000;
put_line("started");
for i in 1..cycles loop
if printon then put_line("head"); end if;
link1.give;
accept give do
null;
end give;
end loop;
put_line("ended");
end head;
task body link1 is
begin
loop
accept give do
null;
end give;
if printon then put_line("link1"); end if;
head.give;
end loop;
end link1;
task body idle1 is
begin
accept init do put_line("idle1"); end init;
accept never do null; end never;
end idle1;
task body idle2 is
begin
accept init do put_line("idle2"); end init;
accept never do null; end never;
end idle2;
task body idle3 is
begin
accept init do put_line("idle3"); end init;
accept never do null; end never;
end idle3;
task body idle4 is
begin
accept init do put_line("idle4"); end init;
accept never do null; end never;
end idle4;
task body idle5 is
begin
accept init do put_line("idle5"); end init;
accept never do null; end never;
end idle5;
task body idle11 is
begin
accept init do put_line("idle11"); end init;
accept never do null; end never;
end idle11;
task body idle12 is
begin
accept init do put_line("idle12"); end init;
accept never do null; end never;
end idle12;
task body idle13 is
begin
accept init do put_line("idle13"); end init;
accept never do null; end never;
end idle13;
task body idle14 is
begin
accept init do put_line("idle14"); end init;
accept never do null; end never;
end idle14;
task body idle15 is
begin
accept init do put_line("idle15"); end init;
accept never do null; end never;
end idle15;
task body idle21 is
begin
accept init do put_line("idle21"); end init;
accept never do null; end never;
end idle21;
task body idle22 is
begin
accept init do put_line("idle22"); end init;
accept never do null; end never;
end idle22;
task body idle23 is
begin
accept init do put_line("idle23"); end init;
accept never do null; end never;
end idle23;
task body idle24 is
begin
accept init do put_line("idle24"); end init;
accept never do null; end never;
end idle24;
task body idle25 is
begin
accept init do put_line("idle25"); end init;
accept never do null; end never;
end idle25;
task body idle211 is
begin
accept init do put_line("idle211"); end init;
accept never do null; end never;
end idle211;
task body idle212 is
begin
accept init do put_line("idle212"); end init;
accept never do null; end never;
end idle212;
task body idle213 is
begin
accept init do put_line("idle213"); end init;
accept never do null; end never;
end idle213;
task body idle214 is
begin
accept init do put_line("idle214"); end init;
accept never do null; end never;
end idle214;
task body idle215 is
begin
accept init do put_line("idle215"); end init;
accept never do null; end never;
end idle215;
begin
null;
end test;
------ EOF ------
ls -l idle20.ada
cat >idle5.ada <<'------ EOF ------'
-- ada tasking tester
-- task head is the controller
-- tasks link are the chain of tasks
-- tasks idle are the standby tasks
with text_io; use text_io;
procedure test is
cycles: integer;
printon: boolean;
answer: character;
task head is
entry give;
end head;
task link1 is
entry give;
end link1;
task idle1 is
entry init;
entry never;
end idle1;
task idle2 is
entry init;
entry never;
end idle2;
task idle3 is
entry init;
entry never;
end idle3;
task idle4 is
entry init;
entry never;
end idle4;
task idle5 is
entry init;
entry never;
end idle5;
task body head is
begin
idle1.init;
idle2.init;
idle3.init;
idle4.init;
idle5.init;
put("do you want printing (y/n)? ");
get(answer);
put("answer is "); put(answer); put_line(" ");
if answer='y' then
printon := true;
else
printon := false;
end if;
if printon then put_line("printing on"); else put_line("print off");
end if;
put("how many cycles? ");
-- doesn't work get_line(cycles);
cycles := 10000;
put_line("started");
for i in 1..cycles loop
if printon then put_line("head"); end if;
link1.give;
accept give do
null;
end give;
end loop;
put_line("ended");
end head;
task body link1 is
begin
loop
accept give do
null;
end give;
if printon then put_line("link1"); end if;
head.give;
end loop;
end link1;
task body idle1 is
begin
accept init do put_line("idle1"); end init;
accept never do null; end never;
end idle1;
task body idle2 is
begin
accept init do put_line("idle2"); end init;
accept never do null; end never;
end idle2;
task body idle3 is
begin
accept init do put_line("idle3"); end init;
accept never do null; end never;
end idle3;
task body idle4 is
begin
accept init do put_line("idle4"); end init;
accept never do null; end never;
end idle4;
task body idle5 is
begin
accept init do put_line("idle5"); end init;
accept never do null; end never;
end idle5;
begin
null;
end test;
------ EOF ------
ls -l idle5.ada
cat >moreselctr.ada <<'------ EOF ------'
-- ada tasking tester
-- task head is the controller
-- tasks link are the chain of tasks
-- tasks idle are the standby tasks
with text_io; use text_io;
procedure test is
cycles: integer;
printon: boolean;
answer: character;
task head;
task link1 is
entry give1;
entry give2;
entry give3;
entry give4;
entry give5;
entry give6;
entry give7;
entry give8;
entry give9;
entry give10;
entry give11;
entry give12;
entry give13;
entry give14;
entry give15;
entry give16;
entry give17;
entry give18;
entry give19;
entry give20;
end link1;
task body head is
begin
put("do you want printing (y/n)? ");
get(answer);
put("answer is "); put(answer); put_line(" ");
if answer='y' then
printon := true;
else
printon := false;
end if;
if printon then put_line("printing on"); else put_line("print off");
end if;
put("how many cycles? ");
-- doesn't work get_line(cycles);
cycles := 1000;
put_line("started");
for i in 1..cycles loop
if printon then put_line("head"); end if;
link1.give1;
link1.give2;
link1.give3;
link1.give4;
link1.give5;
link1.give6;
link1.give7;
link1.give8;
link1.give9;
link1.give10;
link1.give11;
link1.give12;
link1.give13;
link1.give14;
link1.give15;
link1.give16;
link1.give17;
link1.give18;
link1.give19;
link1.give20;
end loop;
put_line("ended");
end head;
task body link1 is
begin
loop
select
accept give20 do null; end give20;
or accept give19 do null; end give19;
or accept give18 do null; end give18;
or accept give17 do null; end give17;
or accept give16 do null; end give16;
or accept give15 do null; end give15;
or accept give14 do null; end give14;
or accept give13 do null; end give13;
or accept give12 do null; end give12;
or accept give11 do null; end give11;
or accept give10 do null; end give10;
or accept give9 do null; end give9;
or accept give8 do null; end give8;
or accept give7 do null; end give7;
or accept give6 do null; end give6;
or accept give5 do null; end give5;
or accept give4 do null; end give4;
or accept give3 do null; end give3;
or accept give2 do null; end give2;
or accept give1 do null; end give1;
end select;
end loop;
end link1;
begin
null;
end test;
------ EOF ------
ls -l moreselctr.ada
cat >moreselect.ada <<'------ EOF ------'
-- ada tasking tester
-- task head is the controller
-- tasks link are the chain of tasks
-- tasks idle are the standby tasks
with text_io; use text_io;
procedure test is
cycles: integer;
printon: boolean;
answer: character;
task head;
task link1 is
entry give1;
entry give2;
entry give3;
entry give4;
entry give5;
entry give6;
entry give7;
entry give8;
entry give9;
entry give10;
entry give11;
entry give12;
entry give13;
entry give14;
entry give15;
entry give16;
entry give17;
entry give18;
entry give19;
entry give20;
end link1;
task body head is
begin
put("do you want printing (y/n)? ");
get(answer);
put("answer is "); put(answer); put_line(" ");
if answer='y' then
printon := true;
else
printon := false;
end if;
if printon then put_line("printing on"); else put_line("print off");
end if;
put("how many cycles? ");
-- doesn't work get_line(cycles);
cycles := 1000;
put_line("started");
for i in 1..cycles loop
if printon then put_line("head"); end if;
link1.give1;
link1.give2;
link1.give3;
link1.give4;
link1.give5;
link1.give6;
link1.give7;
link1.give8;
link1.give9;
link1.give10;
link1.give11;
link1.give12;
link1.give13;
link1.give14;
link1.give15;
link1.give16;
link1.give17;
link1.give18;
link1.give19;
link1.give20;
end loop;
put_line("ended");
end head;
task body link1 is
begin
loop
select
accept give1 do null; end give1;
or accept give2 do null; end give2;
or accept give3 do null; end give3;
or accept give4 do null; end give4;
or accept give5 do null; end give5;
or accept give6 do null; end give6;
or accept give7 do null; end give7;
or accept give8 do null; end give8;
or accept give9 do null; end give9;
or accept give10 do null; end give10;
or accept give11 do null; end give11;
or accept give12 do null; end give12;
or accept give13 do null; end give13;
or accept give14 do null; end give14;
or accept give15 do null; end give15;
or accept give16 do null; end give16;
or accept give17 do null; end give17;
or accept give18 do null; end give18;
or accept give19 do null; end give19;
or accept give20 do null; end give20;
end select;
end loop;
end link1;
begin
null;
end test;
------ EOF ------
ls -l moreselect.ada
cat >moretasks.ada <<'------ EOF ------'
-- ada tasking tester
-- task head is the controller
-- tasks link are the chain of tasks
-- tasks idle are the standby tasks
with text_io; use text_io;
procedure test is
cycles: integer;
printon: boolean;
answer: character;
task head;
task link1 is
entry give;
end link1;
task link2 is
entry give;
end link2;
task link3 is
entry give;
end link3;
task link4 is
entry give;
end link4;
task link5 is
entry give;
end link5;
task link6 is
entry give;
end link6;
task link7 is
entry give;
end link7;
task link8 is
entry give;
end link8;
task link9 is
entry give;
end link9;
task link10 is
entry give;
end link10;
task link11 is
entry give;
end link11;
task link12 is
entry give;
end link12;
task link13 is
entry give;
end link13;
task link14 is
entry give;
end link14;
task link15 is
entry give;
end link15;
task link16 is
entry give;
end link16;
task link17 is
entry give;
end link17;
task link18 is
entry give;
end link18;
task link19 is
entry give;
end link19;
task link20 is
entry give;
end link20;
task body head is
begin
put("do you want printing (y/n)? ");
get(answer);
put("answer is "); put(answer); put_line(" ");
if answer='y' then
printon := true;
else
printon := false;
end if;
if printon then put_line("printing on"); else put_line("print off");
end if;
put("how many cycles? ");
-- doesn't work get_line(cycles);
cycles := 1000;
put_line("started");
for i in 1..cycles loop
if printon then put_line("head"); end if;
link1.give;
link2.give;
link3.give;
link4.give;
link5.give;
link6.give;
link7.give;
link8.give;
link9.give;
link10.give;
link11.give;
link12.give;
link13.give;
link14.give;
link15.give;
link16.give;
link17.give;
link18.give;
link19.give;
link20.give;
end loop;
put_line("ended");
end head;
task body link1 is
begin
loop
accept give do
null;
end give;
end loop;
end link1;
task body link2 is
begin
loop
accept give do
null;
end give;
end loop;
end link2;
task body link3 is
begin
loop
accept give do
null;
end give;
end loop;
end link3;
task body link4 is
begin
loop
accept give do
null;
end give;
end loop;
end link4;
task body link5 is
begin
loop
accept give do
null;
end give;
end loop;
end link5;
task body link6 is
begin
loop
accept give do
null;
end give;
end loop;
end link6;
task body link7 is
begin
loop
accept give do
null;
end give;
end loop;
end link7;
task body link8 is
begin
loop
accept give do
null;
end give;
end loop;
end link8;
task body link9 is
begin
loop
accept give do
null;
end give;
end loop;
end link9;
task body link10 is
begin
loop
accept give do
null;
end give;
end loop;
end link10;
task body link11 is
begin
loop
accept give do
null;
end give;
end loop;
end link11;
task body link12 is
begin
loop
accept give do
null;
end give;
end loop;
end link12;
task body link13 is
begin
loop
accept give do
null;
end give;
end loop;
end link13;
task body link14 is
begin
loop
accept give do
null;
end give;
end loop;
end link14;
task body link15 is
begin
loop
accept give do
null;
end give;
end loop;
end link15;
task body link16 is
begin
loop
accept give do
null;
end give;
end loop;
end link16;
task body link17 is
begin
loop
accept give do
null;
end give;
end loop;
end link17;
task body link18 is
begin
loop
accept give do
null;
end give;
end loop;
end link18;
task body link19 is
begin
loop
accept give do
null;
end give;
end loop;
end link19;
task body link20 is
begin
loop
accept give do
null;
end give;
end loop;
end link20;
begin
null;
end test;
------ EOF ------
ls -l moretasks.ada
cat >moretasksl.ada <<'------ EOF ------'
-- ada tasking tester
-- task head is the controller
-- tasks link are the chain of tasks
-- tasks idle are the standby tasks
with text_io; use text_io;
procedure test is
cycles: integer;
printon: boolean;
answer: character;
task head;
task link1 is
entry give;
end link1;
task link2 is
entry give;
end link2;
task link3 is
entry give;
end link3;
task link4 is
entry give;
end link4;
task link5 is
entry give;
end link5;
task link6 is
entry give;
end link6;
task link7 is
entry give;
end link7;
task link8 is
entry give;
end link8;
task link9 is
entry give;
end link9;
task link10 is
entry give;
end link10;
task link11 is
entry give;
end link11;
task link12 is
entry give;
end link12;
task link13 is
entry give;
end link13;
task link14 is
entry give;
end link14;
task link15 is
entry give;
end link15;
task link16 is
entry give;
end link16;
task link17 is
entry give;
end link17;
task link18 is
entry give;
end link18;
task link19 is
entry give;
end link19;
task link20 is
entry give;
end link20;
task body head is
begin
put("do you want printing (y/n)? ");
get(answer);
put("answer is "); put(answer); put_line(" ");
if answer='y' then
printon := true;
else
printon := false;
end if;
if printon then put_line("printing on"); else put_line("print off");
end if;
put("how many cycles? ");
-- doesn't work get_line(cycles);
cycles := 1000;
put_line("started");
for i in 1..cycles loop
if printon then put_line("head"); end if;
link1.give;
link2.give;
link3.give;
link4.give;
link5.give;
link6.give;
link7.give;
link8.give;
link9.give;
link10.give;
link11.give;
link12.give;
link13.give;
link14.give;
link15.give;
link16.give;
link17.give;
link18.give;
link19.give;
link20.give;
end loop;
put_line("ended");
end head;
task body link1 is
begin
loop
select accept give do null; end give; end select;
end loop;
end link1;
task body link2 is
begin
loop
select accept give do null; end give; end select;
end loop;
end link2;
task body link3 is
begin
loop
select accept give do null; end give; end select;
end loop;
end link3;
task body link4 is
begin
loop
select accept give do null; end give; end select;
end loop;
end link4;
task body link5 is
begin
loop
select accept give do null; end give; end select;
end loop;
end link5;
task body link6 is
begin
loop
select accept give do null; end give; end select;
end loop;
end link6;
task body link7 is
begin
loop
select accept give do null; end give; end select;
end loop;
end link7;
task body link8 is
begin
loop
select accept give do null; end give; end select;
end loop;
end link8;
task body link9 is
begin
loop
select accept give do null; end give; end select;
end loop;
end link9;
task body link10 is
begin
loop
select accept give do null; end give; end select;
end loop;
end link10;
task body link11 is
begin
loop
select accept give do null; end give; end select;
end loop;
end link11;
task body link12 is
begin
loop
select accept give do null; end give; end select;
end loop;
end link12;
task body link13 is
begin
loop
select accept give do null; end give; end select;
end loop;
end link13;
task body link14 is
begin
loop
select accept give do null; end give; end select;
end loop;
end link14;
task body link15 is
begin
loop
select accept give do null; end give; end select;
end loop;
end link15;
task body link16 is
begin
loop
select accept give do null; end give; end select;
end loop;
end link16;
task body link17 is
begin
loop
select accept give do null; end give; end select;
end loop;
end link17;
task body link18 is
begin
loop
select accept give do null; end give; end select;
end loop;
end link18;
task body link19 is
begin
loop
select accept give do null; end give; end select;
end loop;
end link19;
task body link20 is
begin
loop
select accept give do null; end give; end select;
end loop;
end link20;
begin
null;
end test;
------ EOF ------
ls -l moretasksl.ada
More information about the Comp.sources.unix
mailing list