1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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).
|