25. Отладка с помощью sys
> sys:trace(e_prof, true).
ok
> e_prof:add_action("some", 5).
*DBG* e_prof got cast {add_action,"some",5}
*DBG* e_prof new state {state,[{action_accum,[115,111,109,101],[5]}],
[{action_stat_set,{16,15,4},[]},{action_stat_set,{16,14,4},[]},
{action_stat_set,{16,13,4},[]},{action_stat_set,{16,12,4},[]},
{action_stat_set,{16,11,4},[]}]}
ok
> e_prof:add_action("some", 15).
*DBG* e_prof got cast {add_action,"some",15}
*DBG* e_prof new state {state,[{action_accum,[115,111,109,101],
[15,5]}],[{action_stat_set,{16,15,4},[]},{action_stat_set,{16,14,4},
[]},{action_stat_set,{16,13,4},[]},{action_stat_set,{16,12,4},[]},
{action_stat_set,{16,11,4},[]}]}
ok
> sys:trace(e_prof, false).
ok
sys:trace(Name, Flag)
26. Отладка с помощью sys
> sys:statistics(e_prof, true).
ok
> sys:statistics(e_prof, get).
{ok,[{start_time,{{2014,6,18},{16,14,43}}},
{current_time,{{2014,6,18},{16,17,10}}},
{reductions,360},
{messages_in,5},
{messages_out,0}]}
> sys:statistics(e_prof, false).
ok
sys:statistics(Name, Flag)
27. Отладка с помощью sys
> sys:get_state(e_prof).
{state,[],
[{action_stat_set,{16,21,4},[]},
{action_stat_set,{16,20,4},[]},
{action_stat_set,{16,19,4},[]},
{action_stat_set,{16,18,4},[]},
{action_stat_set,{16,17,4},[]}]}
sys:get_state(Name) -> State
28. Отладка с помощью sys
> sys:get_status(e_prof).
{status,<0.136.0>,
{module,gen_server},
[[{'$ancestors',[e_prof_sup,<0.134.0>]},
{'$initial_call',{e_prof,init,1}}],
running,<0.135.0>,
[{statistics,{{{2014,6,18},{16,14,43}},
{reductions,3590}, 4,0}}],
[{header,"Status for generic server e_prof"},
{data,[{"Status",running},
{"Parent",<0.135.0>},
{"Logged events",[]}]},
{data,[{"State", {state,[],
[{action_stat_set,{16,16,4},
[{action_stat,"some",10.0,15,...}]},
{action_stat_set,{16,15,4},[]},
{action_stat_set,{16,14,4},[]},
{action_stat_set,{16,13,4},[]},
{action_stat_set,{16,12,...},[]}]}}]}]]}
sys:get_status(Name) -> Status
34. Оптимизация производительности
Так что можно сделать с gen_server?
- убрать поддержку удаленных узлов
- убрать proc_lib:sync_wait и {ack, Pid, Result}
- убрать обработку исключений try...catch
35. Оптимизация производительности
Так что можно сделать с gen_server?
- убрать поддержку удаленных узлов
- убрать proc_lib:sync_wait и {ack, Pid, Result}
- убрать обработку исключений try...catch
- убрать monitor/demonitor
36. Оптимизация производительности
Так что можно сделать с gen_server?
- убрать поддержку удаленных узлов
- убрать proc_lib:sync_wait и {ack, Pid, Result}
- убрать обработку исключений try...catch
- убрать monitor/demonitor
- не поддерживать Timeout и hibernate