Eshell V5.7.4 (abort with ^G) 1> fprof:trace([start,{file,test.trace}]). ok 2> fprof:trace(stop) 2> . ok ---------------------------------------- 3> fprof:profile([{file,test.trace}]). Reading trace data... .. End of trace! ok 4> fprof:analyse([{dest,test.analyse}]) 4> . Processing data... Creating output... Done! ok 5>
1 -module(chat). 2 -compile(export_all). 3 %-behaviour(gen_server). 4 start(N) -> 5 fprof:trace(start,"chat.trace"), 6 start_link(), 7 test(), 8 test(N), 9 testcast(), 10 fprof:trace(stop), 11 fprof:profile(file,"chat.trace"), 12 %fprof:analyse([{dest,"chat.analysis"}]). 13 fprof:analyse([{dest,"chat.analysis"},{callers,true},{sort,own}]), 14 io:format("11111111111~p~n",[whereis(chat)]). 15 16 test(0)-> 17 gen_server:call(?MODULE, {test,0}); 18 test(N)-> 19 gen_server:call(?MODULE, {test,N}), 20 test(N-1). 21 test()-> 22 chat ! {test,1}. 23 testcast() -> 24 gen_server:cast(?MODULE,castttt). 25 26 start_link() -> 27 gen_server:start_link({local,?MODULE},?MODULE,[],[]). 28 29 init([]) -> 30 {ok, {}}. 31 handle_cast(Msg,State) -> 32 tttt(), 33 io:format("cast=~p~n",[Msg]), 34 {noreply,State}. 35 36 handle_call({test,Number},From, State) when is_number(Number) -> 37 Reply = Number+1, 1,14 顶端
部分分析结果 1 %% Analysis results: 2 { analysis_options, 3 [{callers, true}, 4 {sort, own}, 5 {totals, false}, 6 {details, true}]}. 7 8 % CNT ACC OWN 9 [{ totals, 110269, 799.622, 736.349}]. %%% 10 11 12 % CNT ACC OWN 13 [{ "<0.33.0>", 110269,undefined, 736.349}]. %% 14 15 {[{{gen,do_call,4}, 10001, 276.089, 159.700}], 16 { {gen,wait_resp_mon,3}, 10001, 276.089, 159.700}, % 17 [{{erlang,demonitor,2}, 10001, 53.116, 53.116}, 18 {suspend, 9983, 63.273, 0.000}]}. 19 20 {[{{gen,call,4}, 10001, 499.306, 124.766}], 21 { {gen,do_call,4}, 10001, 499.306, 124.766}, % 22 [{{gen,wait_resp_mon,3}, 10001, 276.089, 159.700}, 23 {{erlang,send,3}, 10001, 53.294, 53.294}, 24 {{erlang,monitor,2}, 10001, 43.054, 43.054}, 25 {garbage_collect, 257, 2.103, 2.103}]}. 26 27 {[{{gen,call,3}, 10001, 617.283, 77.498}], 28 { {gen,call,4}, 10001, 617.283, 77.498}, % 29 [{{gen,do_call,4}, 10001, 499.306, 124.766}, 30 {{erlang,whereis,1}, 10001, 40.479, 40.479}]}. 31 32 {[{{chat,test,1}, 10000, 0.000, 72.848}, 33 {{chat,start,1}, 1, 798.851, 0.060}], 34 { {chat,test,1}, 10001, 798.851, 72.908}, % 35 [{{chat,test,1}, 10000, 0.000, 72.848}, 36 {{gen_server,call,2}, 10001, 725.943, 71.115}]}.