diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2013-08-19 10:09:04 +0100 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2013-08-19 10:09:04 +0100 |
commit | 951619dc64b7ac1afd0072ca371ff96af55a9677 (patch) | |
tree | b65a046ac84ed9ef1c762c07e6d69c3d9e7819cf | |
parent | 4c581d6ca51e709f687ce375573c8e840a8b6c7e (diff) | |
download | rabbitmq-server-951619dc64b7ac1afd0072ca371ff96af55a9677.tar.gz |
Use gb_sets rather than sets for performance.
-rw-r--r-- | src/delegate.erl | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/delegate.erl b/src/delegate.erl index 50518ded..c10e7343 100644 --- a/src/delegate.erl +++ b/src/delegate.erl @@ -193,11 +193,11 @@ handle_cast({monitor, MonitoringPid, Pid}, State = #state{monitors = Monitors}) -> Monitors1 = case dict:find(Pid, Monitors) of {ok, {Ref, Pids}} -> - Pids1 = sets:add_element(MonitoringPid, Pids), + Pids1 = gb_sets:add_element(MonitoringPid, Pids), dict:store(Pid, {Ref, Pids1}, Monitors); error -> Ref = erlang:monitor(process, Pid), - Pids = sets:from_list([MonitoringPid]), + Pids = gb_sets:from_list([MonitoringPid]), dict:store(Pid, {Ref, Pids}, Monitors) end, {noreply, State#state{monitors = Monitors1}, hibernate}; @@ -206,8 +206,8 @@ handle_cast({demonitor, MonitoringPid, Pid}, State = #state{monitors = Monitors}) -> Monitors1 = case dict:find(Pid, Monitors) of {ok, {Ref, Pids}} -> - Pids1 = sets:del_element(MonitoringPid, Pids), - case sets:size(Pids1) of + Pids1 = gb_sets:del_element(MonitoringPid, Pids), + case gb_sets:size(Pids1) of 0 -> erlang:demonitor(Ref), dict:erase(Pid, Monitors); _ -> dict:store(Pid, {Ref, Pids1}, Monitors) @@ -227,8 +227,8 @@ handle_info({'DOWN', Ref, process, Pid, Info}, case dict:find(Pid, Monitors) of {ok, {Ref, Pids}} -> Msg = {'DOWN', {Name, Pid}, process, Pid, Info}, - sets:fold(fun (MonitoringPid, _) -> MonitoringPid ! Msg end, - none, Pids), + gb_sets:fold(fun (MonitoringPid, _) -> MonitoringPid ! Msg end, + none, Pids), State#state{monitors = dict:erase(Pid, Monitors)}; error -> State |