Question

J'ai écrit une application qui a besoin d'être comparés entre eux qui fait le même travail .. le mien est en OCaml tout autre est en Java.

Je voudrais faire deux courses sur les programmes et surveiller l'utilisation de la RAM pendant le temps écoulé par ces exécutions. Les deux programmes sont vraiment la mémoire et cpu intensive, donc je vais avoir assez de données pour les comparer, mais je ne sais pas comment.

Je sais que ce n'est pas tellement significatif aux applications de référence écrites dans des langues différentes, mais est-il un outil que le simple surveille l'utilisation de la RAM d'un programme pendant le temps fournissant peut-être un ensemble de données ou un graphique comme résultat?

EDIT: système d'exploitation idéal est Mac OS X ou tout simplement unix

Était-ce utile?

La solution

J'utilise une solution comparable à celle ygrek. Il est tout à fait universel en termes de la langue de mise en œuvre, tant que vous utilisez Unix. Un petit problème est que les commandes top et ps qui peuvent tous deux être utilisés à cette fin sont tous deux travaillent différemment sur Unix BSD (que Mac OS X) et dérive de Linux. Je suppose que son commandline est pour Linux.

Pour Mac OS X, je:

top -s 10 -l 10000 | grep <PID or process name>

et pour Linux:

top -d 10 -n 10000 | grep <PID or process name>

Le 10 est la période d'échantillonnage en secondes.

Si vous voulez obtenir vos informations de GC OCaml, vous pouvez utiliser Module de OCaml GC , mais ce n'est pas directement comparable au comportement d'un programme Java.

Edité pour ajouter: lorsqu'un GC est impliqué, il y a un compromis entre la surcharge de la mémoire et les frais généraux de temps CPU. Le GC peut travailler plus fort pour faire des blocs morts disponibles plus rapidement et donc maintenir un faible niveau de la consommation de mémoire. Si vous trouvez que cela rend difficile de comparer vos deux programmes, vous pouvez ajuster GC OCaml pour le faire utiliser le même genre de compromis que Java GC. Ceci est documenté dans le module GC. Je pense Java permet ce paramètre à accorder trop.

Autres conseils

while : ; do ps --no-header -o %cpu,vsz,rss -p PID; sleep 1 ; done

Vous pouvez surveiller l'utilisation de Java avec / usr / bin / jvisualvm

Le programme Activity Monitor peut vous donner une estimation approximative de l'utilisation des ressources de tout programme Unix habituelle.

Massif Valgrind peut faire pour le code natif.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top