2014-06-26 6 views
8

Molti linguaggi di calcolo scientifico distinguono tra tempo assoluto (orologio a muro) e tempo CPU (cicli del processore). Ad esempio, in Matlab abbiamo:Misurazione del tempo CPU trascorso in Julia

>> tic; pause(1); toc 
Elapsed time is 1.009068 seconds. 

>> start = cputime; pause(1); elapsed = cputime - start 
elapsed = 
     0 

in Mathematica abbiamo:

>>In[1]:= AbsoluteTiming[Pause[1]] 
>>Out[1]= {1.0010572, Null} 

>>In[2]:= Timing[Pause[1]] 
>>Out[2]= {0., Null} 

Questa distinzione è utile quando comparativa codice eseguito sui server di calcolo, dove ci può essere elevata varianza nel tempo assoluto risultati in base a quali altri processi vengono eseguiti contemporaneamente.

libreria standard La Julia fornisce il supporto per i tempi di espressioni attraverso tic(), toc(), @time e poche altre funzioni/macro tutti basati su time_ns(), una funzione che misura il tempo assoluto.

>>julia> @time sleep(1) 
elapsed time: 1.017056895 seconds (135788 bytes allocated) 

La mia domanda: C'è un modo semplice per ottenere il tempo di CPU trascorso per una valutazione espressione in Julia?

(Nota a margine:. Fare un po 'di scavo, sembra che i tempi Julia si basa sulla funzione uv_hrtime() da libuv Mi sembra che l'utilizzo uv_getrusage dalla stessa libreria potrebbe dare un modo per accedere tempo di CPU trascorso a Julia, ma Non sono esperto. Qualcuno ha provato a utilizzare qualcosa di simile?)

+0

Questo è un grande suggestione. Si prega di inviare un problema o inviare una mail alla mailing list (o inviare una richiesta di pull se si ottiene qualcosa di funzionante!) –

risposta

5

Non sono riuscito a trovare alcuna soluzione esistente, quindi ho creato un pacchetto con alcune semplici funzionalità di temporizzazione della CPU qui: https://github.com/schmrlng/CPUTime.jl. Il pacchetto è completamente testato sul codice parallelo e possono avere altri bug, ma se qualcun altro vorrebbe provarlo chiamando

>> Pkg.clone("https://github.com/schmrlng/CPUTime.jl.git") 

dal prompt julia> dovrebbe installare il pacchetto.

9

Julia ha i comandi tic() e toc() che funzionano proprio come tic e toc in Matlab:

julia> tic(); 7^1000000000; toc() 
elapsed time: 0.046563597 seconds 
0.046563597