summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Radestock <matthias@rabbitmq.com>2012-12-28 21:29:12 +0000
committerMatthias Radestock <matthias@rabbitmq.com>2012-12-28 21:29:12 +0000
commit9fdea0838480095fcf967a777ca63336d0a25918 (patch)
tree9e019965a501b365a92562a3e009af7650fbc949
parente0c4599482c38d250269f59e76076d9841e143c8 (diff)
downloadrabbitmq-server-git-9fdea0838480095fcf967a777ca63336d0a25918.tar.gz
optimise pmon:monitor_all common cases
-rw-r--r--src/pmon.erl6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/pmon.erl b/src/pmon.erl
index 1aeebb72bc..3789811923 100644
--- a/src/pmon.erl
+++ b/src/pmon.erl
@@ -19,6 +19,8 @@
-export([new/0, monitor/2, monitor_all/2, demonitor/2, is_monitored/2, erase/2,
monitored/1, is_empty/1]).
+-compile({no_auto_import, [monitor/2]}).
+
-ifdef(use_specs).
%%----------------------------------------------------------------------------
@@ -48,7 +50,9 @@ monitor(Item, M) ->
false -> dict:store(Item, erlang:monitor(process, Item), M)
end.
-monitor_all(Items, M) -> lists:foldl(fun monitor/2, M, Items).
+monitor_all([], M) -> M; %% optimisation
+monitor_all([Item], M) -> monitor(Item, M); %% optimisation
+monitor_all(Items, M) -> lists:foldl(fun monitor/2, M, Items).
demonitor(Item, M) ->
case dict:find(Item, M) of