diff --git a/src/gen_srv.erl b/src/gen_srv.erl index 76d2b56..cf720ee 100644 --- a/src/gen_srv.erl +++ b/src/gen_srv.erl @@ -454,11 +454,6 @@ cast({via, RegMod, Name}, Msg) -> ok catch _:_ -> ok end; -cast({Name, Node} = Dest, Msg) when is_atom(Name), is_atom(Node) -> - try erlang:send(Dest, {'$gen_cast', Msg}), - ok - catch _:_ -> ok - end; cast(Dest, Msg) -> try erlang:send(Dest, {'$gen_cast', Msg}), ok @@ -476,11 +471,6 @@ send({via, RegMod, Name}, Msg) -> ok catch _:_ -> ok end; -send({Name, Node} = Dest, Msg) when is_atom(Name), is_atom(Node) -> - try erlang:send(Dest, Msg), - ok - catch _:_ -> ok - end; send(Dest, Msg) -> try erlang:send(Dest, Msg), ok diff --git a/test/ping1.erl b/test/ping1.erl index 13cb200..cc8e36f 100644 --- a/test/ping1.erl +++ b/test/ping1.erl @@ -1,16 +1,17 @@ -module(ping1). --compile([export_all]). +-compile([export_all, nowarn_export_all]). -ping(N) -> +call(N) -> {ok, Pid} = pong1:start(), StartTime = erlang:system_time(nanosecond), - doPing(N, Pid, StartTime). + doCall(N, Pid, StartTime). -doPing(0, _Pid, StartTime) -> +doCall(0, Pid, StartTime) -> EndTime = erlang:system_time(nanosecond), - io:format("ping1 over use time: ~p ns~n",[EndTime - StartTime]); -doPing(N, Pid, StartTime) -> + exit(Pid, kill), + io:format("call1 over use time: ~p ns~n",[EndTime - StartTime]); +doCall(N, Pid, StartTime) -> gen_server:call(Pid, ping), - doPing(N - 1, Pid, StartTime). + doCall(N - 1, Pid, StartTime). diff --git a/test/ping2.erl b/test/ping2.erl index a3ebe4b..775741d 100644 --- a/test/ping2.erl +++ b/test/ping2.erl @@ -1,15 +1,46 @@ -module(ping2). --compile([export_all]). +-compile([export_all, nowarn_export_all]). -ping(N) -> +call(N) -> {ok, Pid} = pong2:start(), StartTime = erlang:system_time(nanosecond), - doPing(N, Pid, StartTime). + doCall(N, Pid, StartTime). -doPing(0, _Pid, StartTime) -> +doCall(0, Pid, StartTime) -> EndTime = erlang:system_time(nanosecond), - io:format("ping2 over use time: ~p ns~n",[EndTime - StartTime]); -doPing(N, Pid, StartTime) -> + exit(Pid, kill), + io:format("call2 over use time: ~p ns~n",[EndTime - StartTime]); +doCall(N, Pid, StartTime) -> gen_srv:call(Pid, ping), - doPing(N - 1, Pid, StartTime). \ No newline at end of file + doCall(N - 1, Pid, StartTime). + +send(N) -> + {ok, Pid} = pong2:start(), + StartTime = erlang:system_time(nanosecond), + doSend(N, Pid, StartTime). + +doSend(0, Pid, StartTime) -> + % Ret = gen_srv:call(Pid, ping), + Ret = 1, + EndTime = erlang:system_time(nanosecond), + exit(Pid, kill), + io:format("send2 over use time: ~p ~p ns~n",[Ret, EndTime - StartTime]); +doSend(N, Pid, StartTime) -> + gen_srv:send(Pid, ping), + doSend(N - 1, Pid, StartTime). + +cast(N) -> + {ok, Pid} = pong2:start(), + StartTime = erlang:system_time(nanosecond), + doCast(N, Pid, StartTime). + +doCast(0, Pid, StartTime) -> + %Ret = gen_srv:call(Pid, ping), + Ret = 1, + EndTime = erlang:system_time(nanosecond), + exit(Pid, kill), + io:format("cast2 over use time: ~p ~p ns~n",[Ret, EndTime - StartTime]); +doCast(N, Pid, StartTime) -> + gen_srv:cast(Pid, ping), + doCast(N - 1, Pid, StartTime). diff --git a/test/ping3.erl b/test/ping3.erl deleted file mode 100644 index ea95b12..0000000 --- a/test/ping3.erl +++ /dev/null @@ -1,29 +0,0 @@ --module(ping3). - --compile([export_all]). - -send(N) -> - {ok, Pid} = pong2:start(), - StartTime = erlang:system_time(nanosecond), - doSend(N, Pid, StartTime). - -doSend(0, Pid, StartTime) -> - Ret = gen_srv:call(Pid, ping), - EndTime = erlang:system_time(nanosecond), - io:format("ping2 over use time: ~p ~p ns~n",[Ret, EndTime - StartTime]); -doSend(N, Pid, StartTime) -> - gen_srv:send(Pid, ping), - doSend(N - 1, Pid, StartTime). - -cast(N) -> - {ok, Pid} = pong2:start(), - StartTime = erlang:system_time(nanosecond), - doCast(N, Pid, StartTime). - -doCast(0, Pid, StartTime) -> - Ret = gen_srv:call(Pid, ping), - EndTime = erlang:system_time(nanosecond), - io:format("ping2 over use time: ~p ~p ns~n",[Ret, EndTime - StartTime]); -doCast(N, Pid, StartTime) -> - gen_srv:cast(Pid, ping), - doCast(N - 1, Pid, StartTime). \ No newline at end of file diff --git a/test/pong1.erl b/test/pong1.erl index 4afbd8a..ea5343f 100644 --- a/test/pong1.erl +++ b/test/pong1.erl @@ -2,7 +2,7 @@ -behavior(gen_server). --compile([export_all]). +-compile([export_all, nowarn_export_all]). start() -> gen_server:start(?MODULE, 0, []). diff --git a/test/pong2.erl b/test/pong2.erl index 3785607..b7b1188 100644 --- a/test/pong2.erl +++ b/test/pong2.erl @@ -2,7 +2,7 @@ -behavior(gen_srv). --compile([export_all]). +-compile([export_all, nowarn_export_all]). start() -> gen_srv:start(?MODULE, 0, []). @@ -14,4 +14,7 @@ handleCall(ping, _State, _From) -> {reply, pong}. handleCast(_Msg, State) -> + {noreply, State}. + +handleInfo(_Msg, State) -> {noreply, State}. \ No newline at end of file