with Ada.Text_IO; use Ada.Text_IO;
with Ada.Calendar; use Ada.Calendar;
with pi_digits, pi_digits_gmp;
procedure pi_digits_timing is
t0a,t1a,t0g,t1g: Time;
sa,sg: Float:= 0.0;
runs: constant:= 100;
begin
for run in 1..runs loop
Put_Line("========= Run" & Integer'Image(run));
t0g:= Clock;
pi_digits_gmp;
t1g:= Clock;
t0a:= Clock;
pi_digits;
t1a:= Clock;
Put_Line("Time in seconds (pure Ada): " & Duration'Image(t1a-t0a)); sa:= sa+Float(t1a-t0a);
Put_Line("Time in seconds (GMP): " & Duration'Image(t1g-t0g)); sg:= sg+Float(t1g-t0g);
Put_Line("\--> factor: " & Duration'Image((t1a-t0a)/(t1g-t0g)));
end loop;
sa:=sa/Float(runs);
sg:=sg/Float(runs);
Put_Line("Avg time in seconds (pure Ada): " & Duration'Image(Duration(sa)));
Put_Line("Avg time in seconds (GMP): " & Duration'Image(Duration(sg)));
Put_Line("\--> factor: " & Duration'Image(Duration(sa/sg)));
Put("[press return]");
Skip_Line;
end;