summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2013-08-19 10:09:04 +0100
committerSimon MacMullen <simon@rabbitmq.com>2013-08-19 10:09:04 +0100
commit951619dc64b7ac1afd0072ca371ff96af55a9677 (patch)
treeb65a046ac84ed9ef1c762c07e6d69c3d9e7819cf
parent4c581d6ca51e709f687ce375573c8e840a8b6c7e (diff)
downloadrabbitmq-server-951619dc64b7ac1afd0072ca371ff96af55a9677.tar.gz
Use gb_sets rather than sets for performance.
-rw-r--r--src/delegate.erl12
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