2014-06-26 3 views
8

De nombreux langages informatiques scientifiques distinguent le temps absolu (horloge murale) et le temps CPU (cycles du processeur). Par exemple, dans Matlab nous avons:Mesure du temps CPU écoulé dans Julia

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

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

et Mathematica nous avons:

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

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

Cette distinction est utile lorsque l'analyse comparative exécution de code sur les serveurs de calcul, où il peut y avoir une forte variance dans le temps absolu résultats en fonction de ce que les autres processus sont en cours d'exécution.

La bibliothèque standard Julia prend en charge le calendrier des expressions par tic(), toc(), @time et quelques autres fonctions/macros toutes basées sur time_ns(), une fonction qui mesure le temps absolu.

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

Ma question: Existe-t-il un moyen simple d'obtenir le temps CPU écoulé pour une évaluation d'expression dans Julia?

(Note:. Faire quelques recherches, il semble que le calendrier Julia est basée sur la fonction uv_hrtime() de libuv Il me semble que l'utilisation uv_getrusage de la même bibliothèque pourrait donner un moyen d'accéder temps CPU à Julia, mais Est-ce que quelqu'un a essayé d'utiliser quelque chose comme ça?)

+0

Ceci est une excellente suggestion. Veuillez envoyer un problème ou envoyer un mail à la liste de diffusion (ou envoyer une demande de tirage si quelque chose fonctionne!) –

Répondre

5

Je n'ai trouvé aucune solution existante, j'ai donc mis en place un paquet avec une fonctionnalité de synchronisation de CPU simple ici: https://github.com/schmrlng/CPUTime.jl. Le package est complètement non testé sur le code parallèle et peut avoir d'autres bugs, mais si quelqu'un d'autre voudrait essayer d'appeler à partir de l'invite julia>

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

devrait installer le package.

9

Julia dispose des commandes tic() et toc() qui fonctionnent comme tic et toc dans Matlab:

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