2010-01-08 11 views

cevap

3

anonim bir işlevi ölçmek isterseniz: N

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|...]} 

ortalama çalıştırır:

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

Ben Erlang öğreniyorum ve bu buradan nasıl kitapta egzersiz biridir bunu teşebbüs

lib_misc.erl

ve command-line üzerine, ben

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> 

Eğer aradığınız şey mi yapmak?

+0

Beni endişelendiriyorsun! Doğru sonuçlar almak için 10^6 bölmelisiniz. – t0il3ts0ap

İlgili konular