2017-10-10 6 views
0

Si je veux calculer des choses à Juliacomment puis-je mesurer l'heure de mon programme julia?

invQa = ChebyExp(g->1/Q(g),0,1,5) 
a1Inf = ChebyExp(g->Q(g),1,10,5) 
invQb = ChebyExp(g->1/Qd(g),0,1,5) 
Qb1Inf = ChebyExp(g->Qd(g),1,10,5) 

Comment puis-je compter le temps? combien de secondes dois-je attendre pour que les quatre choses soient faites? Est-ce que je mets tic() dans le beggining et toc() à la fin?

J'essaie de voir d'autres questions à poser, mais je ne comprends pas

J'ai essayé @elapsed, mais aucun résultat

Répondre

5

La méthode de base est d'utiliser

@time begin 
    #code 
end 

Mais notez que vous never should benchmark in the global scope .

Un package qui peut vous aider à évaluer votre code est BenchmarkTools.jl que vous devriez également consulter.

+0

La version la plus simple est probablement 'en utilisant BenchmarkTools; @btime commence ... ' –

+0

Si vous faites cela, vous devez vous rappeler d'interpoler les variables. –

+0

Surtout si les variables sont dans une portée globale: joie: –

2

Vous pouvez faire quelque chose comme ça (je suppose que g est le paramètre d'entrée):

function cheby_test(g::Your_Type) 
    invQa = ChebyExp(g->1/Q(g),0,1,5) 
    a1Inf = ChebyExp(g->Q(g),1,10,5) 
    invQb = ChebyExp(g->1/Qd(g),0,1,5) 
    Qb1Inf = ChebyExp(g->Qd(g),1,10,5) 
end 

function test() 
    g::Your_Type = small_quick # 
    cheby_test(g) #= function is compiled here and 
         you like to exclude compile time from test =# 
    g = real_data() 
    @time cheby_test(g) # here you measure time for real data 
end 

test() 

Je propose de @Time pas appeler une portée mondiale si vous aimez to get proper allocation info de temps macro.