P4a : Analyse de performances de différentes structures
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.
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
Consommation mémoire
Analyse des résultats préalables
Les temps ne sont pas meilleurs que ceux de la std. Sur les vecteurs par exemple, je me fais largement surpasser. Concernant les listes chainées, mes temps sont bien meilleurs. Et enfin, pour les tableaux, là encore la std me bat.
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à.
Mais si ces derniers sont corrects alors je pense simplement que pour les listes chainées, ma domination au niveau du temps est du à moins de tests. En effet, je ne regarde pas si les parametres sont corrects, je me contente de me bander les yeux et de foncer dans le mur. Mais parfois, lorsque les parametres sont surs, comme là, nous en tirons un avantage. C'est sans doute ce qu'il se passe ici.
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.