Skip to content
This repository was archived by the owner on Nov 17, 2020. It is now read-only.

Commit 8149bfe

Browse files
Merge pull request #235 from rabbitmq/performance
Minor performance improvements
2 parents 9f94abb + 76d4c2a commit 8149bfe

File tree

2 files changed

+11
-19
lines changed

2 files changed

+11
-19
lines changed

src/gen_server2.erl

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -331,21 +331,15 @@ call(Name, Request, Timeout) ->
331331
%% Make a cast to a generic server.
332332
%% -----------------------------------------------------------------
333333
cast({global,Name}, Request) ->
334-
catch global:send(Name, cast_msg(Request)),
334+
catch global:send(Name, {'$gen_cast', Request}),
335335
ok;
336336
cast({Name,Node}=Dest, Request) when is_atom(Name), is_atom(Node) ->
337-
do_cast(Dest, Request);
338-
cast(Dest, Request) when is_atom(Dest) ->
339-
do_cast(Dest, Request);
340-
cast(Dest, Request) when is_pid(Dest) ->
341-
do_cast(Dest, Request).
342-
343-
do_cast(Dest, Request) ->
344-
do_send(Dest, cast_msg(Request)),
337+
catch (Dest ! {'$gen_cast', Request}),
338+
ok;
339+
cast(Dest, Request) when is_atom(Dest); is_pid(Dest) ->
340+
catch (Dest ! {'$gen_cast', Request}),
345341
ok.
346342

347-
cast_msg(Request) -> {'$gen_cast',Request}.
348-
349343
%% -----------------------------------------------------------------
350344
%% Send a reply to the client.
351345
%% -----------------------------------------------------------------
@@ -356,13 +350,13 @@ reply({To, Tag}, Reply) ->
356350
%% Asyncronous broadcast, returns nothing, it's just send'n pray
357351
%% -----------------------------------------------------------------
358352
abcast(Name, Request) when is_atom(Name) ->
359-
do_abcast([node() | nodes()], Name, cast_msg(Request)).
353+
do_abcast([node() | nodes()], Name, {'$gen_cast', Request}).
360354

361355
abcast(Nodes, Name, Request) when is_list(Nodes), is_atom(Name) ->
362-
do_abcast(Nodes, Name, cast_msg(Request)).
356+
do_abcast(Nodes, Name, {'$gen_cast', Request}).
363357

364358
do_abcast([Node|Nodes], Name, Msg) when is_atom(Node) ->
365-
do_send({Name,Node},Msg),
359+
catch ({Name, Node} ! Msg),
366360
do_abcast(Nodes, Name, Msg);
367361
do_abcast([], _,_) -> abcast.
368362

@@ -820,9 +814,6 @@ process_msg(Msg, GS2State = #gs2_state { name = Name, debug = Debug }) ->
820814
%%% ---------------------------------------------------
821815
%%% Send/recive functions
822816
%%% ---------------------------------------------------
823-
do_send(Dest, Msg) ->
824-
catch erlang:send(Dest, Msg).
825-
826817
do_multi_call(Nodes, Name, Req, infinity) ->
827818
Tag = make_ref(),
828819
Monitors = send_nodes(Nodes, Name, Tag, Req),
@@ -1403,4 +1394,4 @@ emit_stats(State = #gs2_state{queue = Queue}) ->
14031394

14041395
stop_stats(State) ->
14051396
rabbit_core_metrics:gen_server2_deleted(self()),
1406-
State.
1397+
State.

src/rabbit_core_metrics.erl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,8 @@
100100
%% API
101101
%%----------------------------------------------------------------------------
102102
init() ->
103-
[ets:new(Table, [Type, public, named_table, {write_concurrency, true}])
103+
[ets:new(Table, [Type, public, named_table, {write_concurrency, true},
104+
{read_concurrency, true}])
104105
|| {Table, Type} <- ?CORE_TABLES ++ ?CORE_EXTRA_TABLES],
105106
ok.
106107

0 commit comments

Comments
 (0)