Commandes Linux pour détecter l’utilisation des ressources informatiques d’un programme

Supposons qu’il existe deux programmes a.out et b.out font la même chose: le sorting des éléments. a.out implémente un algorithme de sorting QuickSort prenant O(nlogn) et O(logn) mémoire, b.out implémente un algorithme de sorting BubbleSort qui prend O(n^2) et O(1) mémoire. Je souhaite acquérir des impressions intuitives sur la comparaison de temps et de mémoire entre ces deux algorithmes. Existe-t-il une commande Linux permettant de mesurer la durée et l’utilisation de la mémoire d’un programme après son exécution?

Par programme, j’utiliserais getrusage() , ce qui vous permet de mesurer des fonctions uniques et de manière beaucoup plus détaillée que le time ou le top . Par exemple:

 #include  #include  #include  int main (int argc, char *argv[]) { struct rusage start; struct rusage end; getrusage (RUSAGE_SELF, &start); // get time at start some_function (); // Function to measure getrusage (RUSAGE_SELF, &end); // get time at end printf ("System: %d usecs, User: %d usecs\n", end.ru_stime.tv_usec - start.ru_stime.tv_usec, end.ru_utime.tv_usec - start.ru_utime.tv_usec); ... 

La structure rusage contient les éléments suivants:

 struct rusage { struct timeval ru_utime; // user time used struct timeval ru_stime; // system time used long ru_maxrss; // maximum resident set size long ru_ixrss; // integral shared memory size long ru_idrss; // integral unshared data size long ru_isrss; // integral unshared stack size long ru_minflt; // page reclaims long ru_majflt; // page faults long ru_nswap; // swaps long ru_inblock; // block input operations long ru_oublock; // block output operations long ru_msgsnd; // messages sent long ru_msgrcv; // messages received long ru_nsignals; // signals received long ru_nvcsw; // voluntary context switches long ru_nivcsw; // involuntary context switches }; 

Utilisez le temps qui vous donnera les temps réels, utilisateur et système des programmes. par exemple

  time ./a.out 

La commande top peut être utilisée pour utiliser la mémoire.

Pour obtenir le temps du programme, vous pouvez suivre le lien suivant. Il montre comment utiliser la commande time .

Obtenir le temps d’exécution du programme dans le shell

Pour les ressources en mémoire, veuillez consulter le lien suivant pour savoir comment utiliser top command dans linux.

http://linux.about.com/od/commands/l/blcmdl1_top.htm

try time – time une simple commande ou donne l’utilisation des ressources. La version GNU indique également l’utilisation de la mémoire:

 /usr/bin/time --format="real\t%e\nuser\t%U\nsys\t%S\nmem:\t%M" -- ./a.out