Time a function: Difference between revisions

Add Seed7 example
(→‎{{header|Go}}: added standard technique)
(Add Seed7 example)
Line 987:
=={{header|Scheme}}==
<lang scheme>(time (some-function))</lang>
 
=={{header|Seed7}}==
<lang seed7>$ include "seed7_05.s7i";
include "time.s7i";
include "duration.s7i";
const func integer: identity (in integer: x) is
return x;
const func integer: sum (in integer: num) is func
result
var integer: result is 0;
local
var integer: number is 0;
begin
result := num;
for number range 1 to 1000000 do
result +:= number;
end for;
end func;
const func duration: timeIt (ref func integer: aFunction) is func
result
var duration: result is duration.value;
local
var time: before is time.value;
begin
before := time(NOW);
ignore(aFunction);
result := time(NOW) - before;
end func;
const proc: main is func
begin
writeln("Identity(4) takes " <& timeIt(identity(4)));
writeln("Sum(4) takes " <& timeIt(sum(4)));
end func;</lang>
 
Output of interpreted program:
<pre>
Identity(4) takes 0-00-00 00:00:00.000163
Sum(4) takes 0-00-00 00:00:00.131823
</pre>
 
Output of compiled program (optimized with -O2):
<pre>
Identity(4) takes 0-00-00 00:00:00.000072
Sum(4) takes 0-00-00 00:00:00.000857
</pre>
 
=={{header|Slate}}==