Jump to content

Time a function: Difference between revisions

m
→‎{{header|Phix}}: added identity and total functions, and proper output
(Updated to work with Nim 1.4: added missing parameter type, replaced "stmt" with "untyped", replaced "expr" with "float". Also removed "echo" in proc "doWork". Other changes.)
m (→‎{{header|Phix}}: added identity and total functions, and proper output)
Line 1,781:
{{libheader|Phix/basics}}
Measures wall-clock time. On Windows the resolution is about 15ms. The elapsed function makes things more human-readable, eg 720 (seconds) => 12 minutes
<!--<lang Phix>(phixonline)-->
<span style="color: #0040807060A8;">atomrequires</span> <span style="color: #0000000000FF;">t0(</span> <span style="color: #0000FF000000;">=64</span> <span style="color: #7060A80000FF;">time)</span> <span style="color: #0000FF000080;font-style:italic;">-- (can ignore this in p2js)</span>
<span style="color: #000000;">some_procedure</span><span style="color: #0000FF;">()</span>
<span style="color: #7060A8008080;">printffunction</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1identity</span><span style="color: #0000FF;">,(</span><span style="color: #008000004080;">"%3.2fs\n"integer</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">time</span><span style="color: #0000FF;">()-</span><span style="color: #000000;">t0x</span><span style="color: #0000FF;">)</span>
<span style="color: #000000008080;">some_procedurereturn</span> <span style="color: #0000FF000000;">()x</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"%s\n"</span><span style="color: #0000FF;">,{</span><span style="color: #7060A8;">elapsed</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">time</span><span style="color: #0000FF;">()-</span><span style="color: #000000;">t0</span><span style="color: #0000FF;">)})</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
<span style="color: #008080;">function</span> <span style="color: #000000;">total</span><span style="color: #0000FF;">(</span><span style="color: #004080;">integer</span> <span style="color: #000000;">num</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #000000;">100_000_000</span> <span style="color: #008080;">do</span>
<span style="color: #000000;">num</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">i</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<span style="color: #008080;">return</span> <span style="color: #000000;">num</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
<span style="color: #008080;">procedure</span> <span style="color: #000000;">time_it</span><span style="color: #0000FF;">(</span><span style="color: #004080;">integer</span> <span style="color: #000000;">fn</span><span style="color: #0000FF;">)</span>
<span style="color: #004080;">atom</span> <span style="color: #000000;">t0</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">time</span><span style="color: #0000FF;">()</span>
<span style="color: #004080;">integer</span> <span style="color: #000000;">res</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">fn</span><span style="color: #0000FF;">(</span><span style="color: #000000;">4</span><span style="color: #0000FF;">)</span>
<span style="color: #004080;">string</span> <span style="color: #000000;">funcname</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">get_routine_info</span><span style="color: #0000FF;">(</span><span style="color: #000000;">fn</span><span style="color: #0000FF;">)[</span><span style="color: #000000;">4</span><span style="color: #0000FF;">]</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"%s(4) = %d, taking %s\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">funcname</span><span style="color: #0000FF;">,</span><span style="color: #000000;">res</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">elapsed</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">time</span><span style="color: #0000FF;">()-</span><span style="color: #000000;">t0</span><span style="color: #0000FF;">)})</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span>
<span style="color: #000000;">time_it</span><span style="color: #0000FF;">(</span><span style="color: #000000;">identity</span><span style="color: #0000FF;">)</span>
<span style="color: #000000;">time_it</span><span style="color: #0000FF;">(</span><span style="color: #000000;">total</span><span style="color: #0000FF;">)</span>
<!--</lang>-->
{{out}}
<pre>
identity(4) = 4, taking 0s
total(4) = 5000000050000004, taking 0.2s
</pre>
 
=={{header|Phixmonti}}==
7,806

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.