Browse Source

ft: 修改为二进制匹配

master
SisMaker 4 years ago
parent
commit
f064673ae0
1 changed files with 44 additions and 27 deletions
  1. +44
    -27
      src/test/recon-2.5.1/test.erl

+ 44
- 27
src/test/recon-2.5.1/test.erl View File

@ -2,29 +2,41 @@
-compile([export_all, nowarn_export_all]).
-define(MEM_INFO_INIT(), mem_info_init(?MODULE, ?LINE)).
-define(MEM_INFO_PRINT(), mem_info_print(?MODULE, ?LINE, 100)).
-define(MEM_INFO_PRINT(Threshold), mem_info_print(?MODULE, ?LINE, Threshold)).
-define(MEM_INFO_INIT(), memInfoInit(?MODULE, ?LINE)).
-define(MEM_INFO_PRINT(), memInfoPrint(?MODULE, ?LINE, 100)).
-define(MEM_INFO_PRINT(Threshold), memInfoPrint(?MODULE, ?LINE, Threshold)).
-define(pdMemInfo, '$pdMemInfo').
memInfoInit(CurModule, CurLine) ->
erlang:put(?pdMemInfo, {CurModule, CurLine, erlang:system_time(nanosecond), recon:info(self(), memory_used), erlang:memory()}).
mem_info_init(CurModule, CurLine) ->
erlang:put(pdMemInfo, {CurModule, CurLine, erlang:system_time(nanosecond), recon:info(self(), memory_used)}).
mem_info_print(CurModule, CurLine, Threshold) ->
case erlang:get(pdMemInfo) of
memInfoPrint(CurModule, CurLine, Threshold) ->
case erlang:get(?pdMemInfo) of
undefined ->
erlang:put(pdMemInfo, {CurModule, CurLine, erlang:system_time(nanosecond), recon:info(self(), memory_used)});
{OldModule, OldLine, OldTimeTick, OldMemInfo} ->
erlang:put(?pdMemInfo, {CurModule, CurLine, erlang:system_time(nanosecond), recon:info(self(), memory_used), erlang:memory()});
{OldModule, OldLine, OldTime, OldMemInfo, OldSumInfo} ->
CurMemInfo = recon:info(self(), memory_used),
CurTimeTick = erlang:system_time(nanosecond),
erlang:put(pdMemInfo, {CurModule, CurLine, CurTimeTick, recon:info(self(), memory_used)}),
OldUsed = element(2, lists:nth(1, element(2, OldMemInfo))),
CurUsed = element(2, lists:nth(1, element(2, CurMemInfo))),
Sub = CurUsed - OldUsed,
case erlang:abs(Sub) >= Threshold of
CurTime = erlang:system_time(nanosecond),
CurSumInfo = erlang:memory(),
erlang:put(?pdMemInfo, {CurModule, CurLine, CurTime, CurMemInfo, CurSumInfo}),
SubPid = element(2, lists:nth(1, element(2, CurMemInfo))) - element(2, lists:nth(1, element(2, OldMemInfo))),
SubSum = element(2, lists:keyfind(total, 1, CurSumInfo)) - element(2, lists:keyfind(total, 1, OldSumInfo)),
case erlang:abs(SubSum) >= Threshold orelse erlang:abs(SubPid) >= Threshold of
true ->
io:format("IMY*********Memory use changes are too large~n ~p~n ~p~n ~p~n ~p~n ",
[{add_or_sub, Sub}, {time_diff, CurTimeTick - OldTimeTick}, {old, OldModule, OldLine, OldMemInfo}, {cur, CurModule, CurLine, CurMemInfo}]);
io:format(
"IMY*********Memory use changes are too large:~n"
"addOrSubSum:~20w~n"
"addOrSubPid:~20w~n"
"usedTimeDiff:~19w~n"
"oldLine:~w~n"
"CurLine:~w~n"
"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n"
"OldSumInfo:~w~n"
"CurSumInfo:~w~n"
"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n"
"OldPidInfo:~p~n"
"************************************************************************************~n"
"CurPidInfo:~p~n", [SubSum, SubPid, CurTime - OldTime, {old, OldModule, OldLine, OldTime}, {cur, CurModule, CurLine, CurTime}, OldSumInfo, CurSumInfo, OldMemInfo, CurMemInfo]);
_ ->
ignore
end
@ -325,28 +337,33 @@ get_test2() ->
gc() ->
lists:foreach(fun(Pid) -> erlang:garbage_collect(Pid) end, erlang:processes()).
tt_f1(Term) ->
?MEM_INFO_INIT(),
A = io_lib:format("~w", [Term]),
?MEM_INFO_PRINT(0).
tt_f2(Term) ->
?MEM_INFO_INIT(),
A = eFmt:format("~w", [Term]),
?MEM_INFO_PRINT(0).
tt_f11() ->
?MEM_INFO_INIT(),
A = io_lib:format("~w", [get_test()]),
?MEM_INFO_PRINT(0),
A.
?MEM_INFO_PRINT(0).
tt_f12() ->
?MEM_INFO_INIT(),
A = eFmt:format("~w", [get_test()]),
?MEM_INFO_PRINT(0),
A.
?MEM_INFO_PRINT(0).
tt_f21() ->
?MEM_INFO_INIT(),
A = io_lib:format("~w", [get_test2()]),
?MEM_INFO_PRINT(0),
A.
?MEM_INFO_PRINT(0).
tt_f22() ->
?MEM_INFO_INIT(),
A = eFmt:format("~w", [get_test2()]),
?MEM_INFO_PRINT(0),
A.
?MEM_INFO_PRINT(0).

Loading…
Cancel
Save