Time a function: Difference between revisions
Content added Content deleted
(→{{header|Go}}: added standard technique) |
(Add Seed7 example) |
||
Line 987: | Line 987: | ||
=={{header|Scheme}}== |
=={{header|Scheme}}== |
||
<lang scheme>(time (some-function))</lang> |
<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}}== |
=={{header|Slate}}== |