2010-01-08 29 views

Trả lời

3

Nếu bạn muốn đo một chức năng ẩn danh:

1> TC = fun(F) -> B = now(), V = F(), A = now(), {timer:now_diff(A,B), V} end. 

2> F = fun() -> lists:seq(1,1000) end. 
3> TC(F). 
{47000, 
[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|...]} 

trung bình của N chạy:

4> TCN2 = fun(T,F,0) -> ok; (T,F,N) -> F(), T(T,F,N-1) end. 
5> TCN = fun(F,N) -> B=now(), TCN2(TCN2,F,N), A=now(), timer:now_diff(A,B)/N end. 

6> TCN(F, 1000). 
63.0 
0

tôi đang học Erlang và đây là một trong những bài tập trong cuốn sách, ở đây nó như thế nào Tôi đã thử nó

lib_misc.erl

time_taken_to_execute(F) -> Start = os:timestamp(), 
    F(), 
    io:format("total time taken ~f seconds~n", [timer:now_diff(os:timestamp(), Start)/1000]). 

và trên command-line, tôi làm

1> lib_misc:time_taken_to_execute(fun() -> 1 end). 
total time taken 0.003000 seconds 
ok 
2> lib_misc:time_taken_to_execute(fun() -> [Num || Num <- lists:seq(1, 100)] end). 
total time taken 0.085000 seconds 
ok 
3> lib_misc:time_taken_to_execute(fun() -> [Num || Num <- lists:seq(1, 10000000)] end). 
total time taken 9354.205000 seconds 
ok 
4> 

Có phải đó là một cái gì đó bạn đang tìm kiếm?

+0

Bạn lo lắng cho tôi ở đó !! Bạn phải chia cho 10^6 để có kết quả chính xác. – t0il3ts0ap

Các vấn đề liên quan