diff options
| author | Matthias Radestock <matthias@rabbitmq.com> | 2012-12-28 21:29:12 +0000 |
|---|---|---|
| committer | Matthias Radestock <matthias@rabbitmq.com> | 2012-12-28 21:29:12 +0000 |
| commit | 9fdea0838480095fcf967a777ca63336d0a25918 (patch) | |
| tree | 9e019965a501b365a92562a3e009af7650fbc949 | |
| parent | e0c4599482c38d250269f59e76076d9841e143c8 (diff) | |
| download | rabbitmq-server-git-9fdea0838480095fcf967a777ca63336d0a25918.tar.gz | |
optimise pmon:monitor_all common cases
| -rw-r--r-- | src/pmon.erl | 6 |
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 |
