diff options
Diffstat (limited to 'src/edit_prof.erl')
-rw-r--r-- | src/edit_prof.erl | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/edit_prof.erl b/src/edit_prof.erl new file mode 100644 index 0000000..08aea4d --- /dev/null +++ b/src/edit_prof.erl @@ -0,0 +1,36 @@ +-module(edit_prof). +-compile(export_all). + +start(Filename) -> + Edit = spawn_link(fun() -> edit:start(Filename) end), + timer:start_link(), + eprof:start(), + profiling = eprof:profile([Edit, scratch]), + ok = eprof:analyse(), + analyse_loop(). + +analyse_loop() -> + receive after 5000 -> + eprof:total_analyse() + end, + analyse_loop(). + +leader() -> + {ok, ProfLog} = file:open("prof.log", [write]), + spawn_link(?MODULE, leader_proc, [ProfLog]). + +leader_proc(Fd) -> + receive + {io_request, From, ReplyAs, {put_chars, C}} -> + file:write(Fd, C), + From ! {io_reply, ReplyAs, ok}; + {io_request, From, ReplyAs, {put_chars, M, F, A}} -> + file:write(Fd, apply(M, F, A)), + From ! {io_reply, ReplyAs, ok}; + {io_request, From, ReplyAs, {get_until, _, _, _}} -> + From ! {io_reply, ReplyAs, eof}; + X -> + file:write(Fd, io_lib:format("Unexpected: ~p~n", [X])) + end, + leader_proc(Fd). + |