aboutsummaryrefslogtreecommitdiffstats
path: root/lib/stdlib/src
diff options
context:
space:
mode:
authorDan Gudmundsson <[email protected]>2011-03-30 12:50:03 +0200
committerDan Gudmundsson <[email protected]>2011-05-11 16:08:18 +0200
commit1d4472c3e6bad242c04ab5925ac12b3053ece323 (patch)
treeb2e675e2395cfa8a3f1ceb86bbde235d01180797 /lib/stdlib/src
parent0a80859714d86191e17f84cf60833010b20655d0 (diff)
downloadotp-1d4472c3e6bad242c04ab5925ac12b3053ece323.tar.gz
otp-1d4472c3e6bad242c04ab5925ac12b3053ece323.tar.bz2
otp-1d4472c3e6bad242c04ab5925ac12b3053ece323.zip
Add timer:tc/1 which measures elapsed time for a fun/0
Also removes the 'catch' from timer:tc functions which masked errors in measuring code.
Diffstat (limited to 'lib/stdlib/src')
-rw-r--r--lib/stdlib/src/timer.erl25
1 files changed, 17 insertions, 8 deletions
diff --git a/lib/stdlib/src/timer.erl b/lib/stdlib/src/timer.erl
index b456c5d6c1..78e897b877 100644
--- a/lib/stdlib/src/timer.erl
+++ b/lib/stdlib/src/timer.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2010. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -22,7 +22,7 @@
send_after/3, send_after/2,
exit_after/3, exit_after/2, kill_after/2, kill_after/1,
apply_interval/4, send_interval/3, send_interval/2,
- cancel/1, sleep/1, tc/2, tc/3, now_diff/2,
+ cancel/1, sleep/1, tc/1, tc/2, tc/3, now_diff/2,
seconds/1, minutes/1, hours/1, hms/3]).
-export([start_link/0, start/0,
@@ -101,15 +101,24 @@ sleep(T) ->
after T -> ok
end.
+%%
+%% Measure the execution time (in microseconds) for Fun().
+%%
+-spec tc(function()) -> {time(), term()}.
+tc(F) ->
+ Before = os:timestamp(),
+ Val = F(),
+ After = os:timestamp(),
+ {now_diff(After, Before), Val}.
%%
%% Measure the execution time (in microseconds) for Fun(Args).
%%
-spec tc(function(), [_]) -> {time(), term()}.
tc(F, A) ->
- Before = erlang:now(),
- Val = (catch apply(F, A)),
- After = erlang:now(),
+ Before = os:timestamp(),
+ Val = apply(F, A),
+ After = os:timestamp(),
{now_diff(After, Before), Val}.
%%
@@ -117,9 +126,9 @@ tc(F, A) ->
%%
-spec tc(atom(), atom(), [term()]) -> {time(), term()}.
tc(M, F, A) ->
- Before = erlang:now(),
- Val = (catch apply(M, F, A)),
- After = erlang:now(),
+ Before = os:timestamp(),
+ Val = apply(M, F, A),
+ After = os:timestamp(),
{now_diff(After, Before), Val}.
%%