함수 실행 시간 측정
erlang에서timer:tc/3를 통해 어떤 함수의 실행 시간을 쉽게 얻을 수 있습니다.
tc(Module, Function, Arguments) -> {Time, Value}
Types Module = Function = atom()
Arguments = [term()]
Time = integer() in microseconds
Value = term()
반환값에서 Time은 함수 소모 시간을 나타내며 단위는 ms입니다.
때때로 우리는 어떤 함수의 집행을 여러 번 해야 함수의 집행 시간을 더욱 정확하게 얻을 수 있다. 우리는 이런 함수를 쓸 수 있다.
-module(test_avg).
-compile(export_all).
tc(M, F, A, N) when N > 0 ->
L = test_loop(M, F, A, N, []),
Len = length(L),
LSorted = lists:sort(L),
Min = lists:nth(1, LSorted),
Max = lists:nth(Len, LSorted),
Med = lists:nth(round(Len/2), LSorted),
Avg = round(lists:foldl(fun(X, Sum) ->
X + Sum end,
0,
LSorted)/Len),
io:format("Range:~b - ~b mics~n"
"Median:~b mics ~n"
"Average:~b mics ~n",
[Min, Max, Med, Avg]),
Med.
test_loop(_M, _F, _A, 0, List) ->
List;
test_loop(M, F, A, N, List) ->
{T, _R} = timer:tc(M, F, A),
test_loop(M, F, A, N-1, [T|List]).
이렇게 하면 우리는 어떤 함수가 여러 번 실행하는 최소 소모 시간, 최대 소모 시간, 평균 소모 시간을 얻을 수 있다.
실험해 보자:
>
test_avg:tc(test_state, test, [], 10).
>Range:68 - 99 mics
Median:76 mics
Average:77 mics
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Instalando o Elixir e o Erlang com o gerenciador de versões asdfEsse tutorial usa o gerenciador de versões asdf, mas fique a vontade para utilizar outros se preferir. Infelizmente o as...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.