erlang各种有用的函数包括一些有用nif封装,还有一些性能测试case。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

179 lines
4.7 KiB

-module(utTestTrace).
-compile([export_all, nowarn_unused_function, nowarn_unused_vars, nowarn_export_all]).
t1() ->
Pid = spawn(fun() -> do_t1(1) end),
send_msg(Pid, 100000).
t2() ->
Pid = spawn(fun() -> do_t2(1) end),
send_msg(Pid, 100000).
send_msg(Pid, 0) ->
io:format("IMY***********send_msg over ~p ~n ~p ~n", [0, Pid]),
ok;
send_msg(Pid, N) ->
Pid ! <<2:(N)>>,
% timer:sleep(1),
send_msg(Pid, N - 1).
do_t1(N) ->
case N == 1 orelse N == 90000 of
true ->
erlang:garbage_collect(),
Result = erlang:process_info(self(), [memory, garbage_collection]),
io:format("IMY************************* ~p~n ~w ~n", [N, Result]);
%io:format("IMY&&&&&&&&&&&&&&&&&&&&&&&&& ~p~n backtrace:~p~n~n", [N, erlang:process_display(self(), backtrace)]);
_ ->
ignore
end,
try
receive
_ ->
ok
%% do_t1(N + 1)
end,
do_t1(N + 1)
catch
_:_ ->
do_t1(N + 1)
end.
do_t2(N) ->
case N == 1 orelse N == 90000 of
true ->
erlang:garbage_collect(),
Result = erlang:process_info(self(), [memory, garbage_collection]),
io:format("IMY************************* ~p ~n ~w ~n", [N, Result]),
io:format("IMY&&&&&&&&&&&&&&&&&&&&&&&&& ~p ~n backtrace:~w~n~n", [N, erlang:process_display(self(), backtrace)]);
_ ->
%io:format("IMY************************* ~p ~n", [N]),
ignore
end,
receive
_ ->
do_t2(N + 1)
end.
desult3(N, State) ->
%io:format("IMy*********************desult3 ~p~n",[N]),
do_t3(N).
desult4(N, State) ->
do_t4(N).
t3() ->
Pid = spawn(fun() -> do_t3(100000) end).
t4() ->
Pid = spawn(fun() -> do_t4(100000) end).
do_t3(0) ->
io:format("IMy*********************dfdfdffd33333333");
do_t3(N) ->
case N == 1 orelse N == 99999 of
true ->
erlang:garbage_collect(),
Result = erlang:process_info(self(), [memory, garbage_collection]),
io:format("IMY************************* ~p~n ~w ~n", [N, Result]),
io:format("IMY&&&&&&&&&&&&&&&&&&&&&&&&& ~p~n backtrace:~p~n~n", [N, erlang:process_display(self(), backtrace)]);
_ ->
ignore
end,
try test:tt9(2) of
Ret ->
desult3(N - 1, Ret)
catch
_:_ ->
desult3(N - 1, error)
end.
do_t4(0) ->
io:format("IMy*********************dfdfdffd44444444444");
do_t4(N) ->
case N == 1 orelse N == 99999 of
true ->
erlang:garbage_collect(),
Result = erlang:process_info(self(), [memory, garbage_collection]),
io:format("IMY************************* ~p ~n ~w ~n", [N, Result]),
io:format("IMY&&&&&&&&&&&&&&&&&&&&&&&&& ~p ~n backtrace:~w~n~n", [N, erlang:process_display(self(), backtrace)]);
_ ->
%io:format("IMY************************* ~p ~n", [N]),
ignore
end,
Ret1 = try test:tt9(2) of
Ret ->
Ret
catch
_:_ ->
error
end,
do_t4(N - 1).
do_t5(0) ->
io:format("IMy*********************dfdfdffd55555555555555");
do_t5(N) ->
case N == 1 orelse N == 99999 of
true ->
erlang:garbage_collect(),
Result = erlang:process_info(self(), [memory, garbage_collection]),
io:format("IMY************************* ~p ~n ~w ~n", [N, Result]),
io:format("IMY&&&&&&&&&&&&&&&&&&&&&&&&& ~p ~n backtrace:~w~n~n", [N, erlang:process_display(self(), backtrace)]);
_ ->
%io:format("IMY************************* ~p ~n", [N]),
ignore
end,
try test:tt9(2) of
Ret ->
do_t5(N - 1)
catch
_:_ ->
error
end.
do_t6(0) ->
io:format("IMy*********************dfdfdffd55555555555555");
do_t6(N) ->
case N == 1 orelse N == 99999 of
true ->
erlang:garbage_collect(),
Result = erlang:process_info(self(), [memory, garbage_collection]),
io:format("IMY************************* ~p ~n ~w ~n", [N, Result]);
%io:format("IMY&&&&&&&&&&&&&&&&&&&&&&&&& ~p ~n backtrace:~w~n~n", [N, erlang:process_display(self(), backtrace)]);
_ ->
%io:format("IMY************************* ~p ~n", [N]),
ignore
end,
try test:tt9(2) of
Ret ->
do_t6(N - 1)
catch
_:_ ->
error
%after
% ok
end.
do_t7(0) ->
io:format("IMy********************11111");
do_t7(N) ->
io:format("IMy********************22222"),
try test:tt9(2) of
_Ret ->
io:format("IMy********************3333"),
do_t7(N - 1)
catch
throw:ret ->
io:format("IMy********************4444"),
do_t7(N - 1);
_:_ ->
io:format("IMy********************5555"),
error
end.