• Aucun résultat trouvé

analyse du temps de calcul de (3) qsort

N/A
N/A
Protected

Academic year: 2022

Partager "analyse du temps de calcul de (3) qsort"

Copied!
7
0
0

Texte intégral

(1)

Analyse de la fonction qsort de la glibc

πλ Octobre 2013

derni` ere compilation : 7 novembre 2014

R´esum´e

Dans le cours, nous avons ´etabli que le tri rapide qsort traite, en moyenne, un tableau de taille n en utilisant 2nlogn comparaisons. Un fait facile `a mettre en ´evidence au travers d’une exp´erience num´erique introductive `a :qsort,/usr/bin/time,gnuplot,make,gcc,bash.

1 mesure des temps

On dispose de plusieurs solutions pour faire des mesures de temps de calcul :

— `a la source :time(),clock(),gettimeofday(). . .

— la commande internetime.

— le profileurgprof.

— la commande externe/user/bin/time.

Avec la derni`ere option, on peut lancer le chronom´etrage d’une commande, en pr´ecisant un format d’affichage :

sample> / u s r / b i n / t i m e −−f o r m a t=”%E” s l e e p 7 0 : 0 7 . 0 2

sample> / u s r / b i n / t i m e −−f o r m a t=”%E” s l e e p 1 | t r : M 0 : 0 1 . 0 0

sample> / u s r / b i n / t i m e −−f o r m a t=”%E” s l e e p 1 |& t r : M 0M01 . 0 0

On notera la diff´erence avec la commande internetimequi mesure le temps de caclcul d’un pipeline :

sample> t i m e s l e e p 1 | g r e p u s e r r e a l 0m1. 0 0 8 s

u s e r 0m0. 0 0 0 s s y s 0m0. 0 0 4 s

sample> t i m e s l e e p 1 |& g r e p u s e r r e a l 0m1. 0 0 5 s

u s e r 0m0. 0 0 0 s

(2)

Table 1 – Les principales options du format d’affichage de la commande /usr/bin/time

FMT d´etails

%E Elapsed real time (in [hours :]minutes :seconds)

%e (Not in tcsh.) Elapsed real time (in seconds)

%S Total number of CPU-seconds spent in kernel mode

%U Total number of CPU-seconds spent in user mode

%P Ratio CPU

%M Memory size

%F Number of major page faults.

%R Number of minor, or recoverable, page faults.

%W Number of times the process was swapped out of main memory

%c Number of times the process was context-switched

TIME( 1 ) Linux User ’ s Manual NAME

t i m e − t i m e a s i m p l e command o r g i v e r e s o u r c e u s a g e SYNOPSIS

t i m e [ o p t i o n s ] command [ arguments . . . ] DESCRIPTION

The t i m e command r u n s t h e s p e c i f i e d program command w i t h t h e g i v e n arguments . When command f i n i s h e s , t i m e w r i t e s a m es sag e t o s t a n d a r d e r r o r g i v i n g t i m i n g s t a t i s t i c s about

t h i s program run .

Note : some s h e l l s ( e . g . , bash ( 1 ) ) have a b u i l t−i n t i m e command t h a t p r o v i d e s l e s s f u n c t i o n a l i t y than t h e

command

d e s c r i b e d h e r e . To a c c e s s t h e r e a l command , you may need t o s p e c i f y i t s pathname ( s o m e t h i n g l i k e / u s r / b i n / t i m e ) .

s y s 0m0. 0 0 3 s

sample> ( t i m e s l e e p 1 ) |& g r e p u s e r u s e r 0m0. 0 0 0 s

On constate que, par d´efaut, le r´esultat de la mesure est envoy´e sur la sortie erreur standard. Les principales options du format de la commande/usr/bin/time sont r´esum´ees dans la tabletab. [??].

2 makefile

On implante le tri rapide de la bibioth`eque standard, dans une sourceqsort.c.

Le document que vous lisez est contruit `a partir de cette source, les compila- tions sont pilot´ees par un fichier makefile. Les principaux ingr´edients d’une exp´erience num´erique y sont pr´esents :

— lemakefileet ses cibles.

(3)

Table 2 – Les principales options de la commandemake.

option

make pour satifaire la premi`ere cible make -d pour voir les tentatives implicites make -B pour forcer les compilations make cible pour satisfaire cible

make -C changer de r´ep´ertoire make X=13 initialis´ee la variable X

— la compilation des objets.

— la compilation d’un ex´ecutable.

— un script pour r´ealiser les mesures.

— gnuplotpour dessiner.

— pdflatexpour compiler la source LATEX.

Rappelons quemake, ouvre un fichiermakefiledu r´epertoire courant pour mettre `a jour la premi`ere cible en fonction de certaines action sous des conditions de d´ependances.

c i b l e : d e p e n d a n c e s [ t a b u l a t i o n ] a c t i o n 1 [ t a b u l a t i o n ] a c t i o n 2

Les utilisations courantes de la commande make sont r´esum´ees dans tab.

[??].

Dans l’exemple,

— make nice met les sources C dans le style de codage dit Kernighan &

Richie.

— make clean efface les traits de constructions.

— make proper pour repartir sur de nouvelles bases.

SHELL=/b i n / bash CFLAGS=−Wall −g

a l l : c o u n t . p d f

c o u n t . p d f : c o u n t . png c o u n t . t e x p d f l a t e x c o u n t . t e x

q s o r t . e x e : t a b l e . o q s o r t . c

g c c $ (CFLAGS) t a b l e . o q s o r t . c −o q s o r t . e x e t a b l e . o : t a b l e . c

g c c $ (CFLAGS) −c t a b l e . c c o u n t . t x t : q s o r t . e x e

f o r l i n {1 . . 1 6}; do\

. / q s o r t . e x e −l $ $ l −c ;\ done > c o u n t . t x t

(4)

c o u n t . png : c o u n t . p l t c o u n t . t x t

s e d −n ’ s / [ a−z ]∗=/ /gp ’ c o u n t . t x t > c o u n t . d a t g n u p l o t c o u n t . p l t

c l e a n :

rm −f ∗. l o g ∗. aux rm −f ∗˜

p r o p e r :

rm −f ∗. e x e ∗. d at ∗. png ∗. o make c l e a n

n i c e :

i n d e n t −k r ∗. c t a r :

make p r o p e r

t a r c v f . . / sample . t a r ∗

3 graphique

Le graphique est construit pargnuplot`a partir d’un fichier de commandes count.plt, et d’un fichier de donn´eescount.dat.

s e t o u t p u t ’ c o u n t . png ’ i n p u t = ” c o u n t . d a t ” s e t t e r m i n a l png

s e t t i t l e ’ a n a l y s e de q u i c k s o r t ’

p l o t i n p u t w i t h l i n e s , x∗l o g( x ) , 2∗x∗l o g( x ) q u i t

(5)

1. Reproduire le graphique analogue.

2. Comparer ces r´esultats avec ceux du cours.

4 qsort

Le programme propos´e utilise deux fonctions importantes des bibliot`eques standards :getoptpour g´erer les options de la ligne de commande et la fonction de tri g´en´eriqueqsort.

1 #include”table.h”

2 3

4 intcomp = 0;

5

6 intcmp(const void∗x,const void∗y)

7 {

8 comp++;

9 if (∗(int ∗) x<∗(int∗) y)

10 return−1;

11 if (∗(int ∗) x>∗(int∗) y)

12 return+1;

13 return0;

14 }

15

(6)

16 intmain(intargc,char∗argv[])

17 {

18 int i , n = 0, ∗t;

19 int opt, count = 0, skip = 0;

20 while ((opt = getopt(argc, argv,”l : n:cs”)) !=−1){

21 switch (opt){

22 case’l ’:

23 n = 1<<atoi(optarg);

24 break;

25 case’n’:

26 n = atoi(optarg);

27 break;

28 case’c’:

29 count = 1;

30 break;

31 case’s’:

32 skip = 1;

33 break;

34 default: /∗ ’?’ ∗/

35 fprintf (stderr , ”Usage: %s−ln{number} −count −skip\n”,

36 argv[0]) ;

37 exit (1);

38 }

39 }

40 srandom( time(NULL));

41 t = calloc(n, sizeof(t));

42 for (i = 0; i <n; i ++)

43 t[ i ] = random();

44 if ( ! skip) {

45 qsort(t, n, sizeof(int), cmp);

46 if (count)

47 printf (”\nn=%d count=%d”, n, comp);

48 }

49 return0;

50 }

1. Quelles sont les options g´er´ees dansqsort.c? 2. Reproduire l’exempleman 3 qsort.

3. Modifier cet exemple pour trier des nombres de petites tailles pass´es par la ligne de commande.

5 code source

Obtenir le code source de la fonctionqsortde laglibc.

1. Comment est implant´ee la r´ecursion ?

(7)

2. Comment est implant´ee la coupure ?

3. Quelle est la valeur de seuil pour la r´ecursion ?

6 sort

1. Utiliser leltracepour v´erifier que sortutiliseqsort.

2. Mesurer le temps de calcul de la commande externesortsur des fichiers al´eatoires.

— Ecrire une commande pour trier les lignes d’un fichier.

— Comparer les performances avecsort.

— Comparer avec un scriptpython.

— Comparer avec un scriptperl.

Références

Documents relatifs

Note : Dans le cas de l'acp de la matrice des corrélations, les coordonnées des variables sont égales aux corrélations entre les variables et les différents vecteurs propres

[r]

FORMALISATION 14 Une ´ equation d’´ etat est une ´ equation qui lie l’ensemble des variables d’´ etat, par exemple T(V,N,S) est une ´ equation d’´ etat qui caract´ erise

fac¸on suivante : on prend une feuille rectangulaire de carton de c ˆot´es a et b puis on d´ecoupe de chaque coin un carre de c ˆot´e x puis on rabat les morc¸eau ainsi obtenus

On dit que la partie A admet un plus grand ´ el´ ement s’il existe un ´ el´ ement de A qui majore tous les autres ´ el´ ement, dans ce cas il est unique et on le note max

C’est une propri´ et´ e dont l’exactitude est induscutable, et sur la- quelle se fonde toute les math´ ematiques, ou au moins une partie, il y’en a 7 au total dont les plus

Lors d’un entretien d’embauche, un chef d’entreprise re¸ coit quatre ing´ enieurs : un ayant fait l’´ ecole polytechnique, le second HEC, le troisi` eme informaticien, et

D’une fa¸con pareille on peut d´efinir les notions de minorants, borne inf´erieure et minimum d’une partie de