Skip to content
Snippets Groups Projects
HAQUIN ELOUAN's avatar
HAQUIN ELOUAN authored
f83c7561
Forked from GOSSA JULIEN / P4a
21 commits ahead of the upstream repository.
Name Last commit Last update
Code
UML
r
Evaluation.md
Projet.md
README.md
recherche.c

P4a : Analyse de performances de différentes structures

Grille d'évaluation P4a

Problème

Le problème visé est celui des performances sur les opérations de bases pour des implémentations maisons des listes chaînées, tableaux et vecteurs.

Les différents paramètres exploratoires seront exportés en graphes grâce à R. De plus ces différents paramètres seront des opérations de base, insertion, suppression, recherche..

La liste chaînée sera testée sur : l'insertion, la suppression et l'accès. Le tableau sera testé sur : le remplacement, la suppression et l'accès. Les Vecteurs seront testés sur : l'addition, la multiplication et la division.

Dispositif expérimental

Les membres du dispositif experimentals sont les listes chainées, les tableaux, et les vecteurs. Tous codés en C++. Ils seront analysés en concurrence contre leurs homologues de la STD.

Le dispositif mis en place, est le suivant: Les structures demandées (Listes chainées, tableaux, vecteurs) seront implémentées, testées, et enfin profilées.

Nos résultats seront plus précis a partir d'un certain nombre de tests, cependant, trop de tests seraient inutiles. Une borne maximale est alors, pour le moment, fixée à 100 000 tests de la même fonction.

Les tests vont varier selon plusieurs paramètres :

Une autre variation attendue, est celle de la taille pour les listes chaînées, et également pour les tableaux. En effet, un accès à une valeur dans une liste de 100 000 éléments n'aura sans doute pas le même impact de performances qu'un accès sur une liste à 3 éléments.

Il y aura également des tests sans variation, en effet, la machine peut varier en terme de performances d'un test à l'autre.

Et pour finir, les tests sur les vecteurs vont varier en fonction de leurs valeurs attribuées. Ces valeurs seront croissantes durant les différents tests, afin d'étudier leur impact sur les performances.

Grâce à ce nombre de variation, nous pourrons nous permettre de comparer nos classes, contre celles de la std.

Organisation objet

Diagramme de l'organisation des classes et interfaces. Toutes ces classes utilisent le template ansi que Container.

LinkedList

Application

code source de l'application

Description de l'application et des arguments

Environnement de test

Description de la plateforme de test

L'environnement de test est :
  Un Ryzen 7 1700X 8 coeurs
  16 Go de Ram DDR4

Description de la démarche systématique

Description de la démarche systématique et de l'espace d'exploration pour chaque paramètres.

Les paramètres expérimentaux sont
- a, un nomnbre de répétions variant de 100 à 100 000 avec un pas de random entre 1000 et 250 ;
Pour chaque paramétrage, x mesures sont effectuées.

Les observations sont :
- le temps d'éxécution en millisecondes

Résultats préalables

Temps d'exécution

plot

Consommation mémoire

plot

Analyse des résultats préalables

Les temps sont effectivement meilleurs que ceux de la std; Etrangement. C'est sans doute du à une modularité bien moindre et une capacité à crash bien plus élevée. Même si mon code est parfois plus rapide, il est également moins prévsiible, avec bien plus de valeurs "Hors norme".

Discussion des résultats préalables

Mes résultats ne permettent en aucun cas de tirer une conclusion concernant la mémoire. En effet celle-ci n'a pas été réellement traitée. Je pense honnêtement que mes résultats sont étranges. Je n'ai pas vraiment confiance en ces derniers. Et la limite est sans doute là. Ils sont faux et unitilisables. Enfin je pense.

Etude approfondie

Hypothèse

L'hypothèse qui sera annalysée, est la suivante, si l'on code sans sécurité, c'est à dire sans aucun test de valeurs interdites, nous pouvons avoir des performances accrues.

Protocole expérimental de vérification de l'hypothèse

Expression précise et succincte du protocole.

Suite des commandes, ou script, à exécuter pour produire les données.

Résultats expérimentaux

Analyse des résultats expérimentaux

Discussion des résultats expérimentaux

Conclusion et travaux futurs