diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/cowboy_app.erl | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/cowboy_app.erl b/src/cowboy_app.erl index 91f9818..114eb9a 100644 --- a/src/cowboy_app.erl +++ b/src/cowboy_app.erl @@ -15,7 +15,7 @@ -module(cowboy_app). -behaviour(application). --export([start/2, stop/1]). %% API. +-export([start/2, stop/1, profile_output/0]). %% API. -type application_start_type() :: normal | {takeover, node()} | {failover, node()}. @@ -24,8 +24,29 @@ -spec start(application_start_type(), any()) -> {ok, pid()}. start(_Type, _Args) -> + consider_profiling(), cowboy_sup:start_link(). -spec stop(any()) -> ok. stop(_State) -> ok. + +-spec profile_output() -> ok. +profile_output() -> + eprof:stop_profiling(), + eprof:log("procs.profile"), + eprof:analyze(procs), + eprof:log("total.profile"), + eprof:analyze(total). + +%% Internal. + +-spec consider_profiling() -> profiling | not_profiling. +consider_profiling() -> + case application:get_env(profile) of + {ok, true} -> + eprof:start(), + eprof:start_profiling([self()]); + _ -> + not_profiling + end. |