# P4a : Analyse de performances de différentes structures

[Grille d'évaluation P4a](Evaluation.md)

## Problème

**Langage utilisé**

Nous avons choisi d'utiliser le langage Java car il est plus adapté à notre organisation.

**Description du problème**

Analyse de performance de deux structures, faisant la même chose, mais fonctionnant différemment.

Deux paramètres au démarrage :
- Valeur que l'on veut trouver dans chaque tableau
- Nombre de valeurs dans chaque tableau :
    - Chaque tableau génère x nombres aléatoires. De plus, nous indiquons le nombre que l'on veut trouver, qui doit être trouvé dans chaque tableau. Ainsi, le code nous renverra l’indice qui correspond à l’endroit où la valeur voulue se trouve dans le tableau et nous aurons un résultat correspondant à l'indice de la valeur trouvée dans chaque tableau

Contrainte : il faut de l’abstraction, et au moins un tableau ET une liste chaînée (Maillons)


**Description des paramètres exploratoires du problème**

- Analyser la différence de performance sur des opérations simples dans chaque structure (Inserer, Supprimer)

**Organisation du projet**

![](/UML_P4a.PNG)

## Dispositif expérimental

### Organisation objet

Description de l'organisation des classes et interfaces, ou diagramme de classes.

### Application

[code source de l'application](chemin)
```
Description de l'application et des arguments
```

### Environnement de test

Description de la plateforme de test
```
Extrait pertinent de /proc/cpuinfo
```

### Description de la démarche systématique

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

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

## Résultats préalables

### Temps d'exécution

![plot](prealable.png)

### Consommation mémoire

![plot](prealable-mem.png)

### Analyse des résultats préalables

La mémoire se comporte exactement pareil sur les 4 versions.
Les temps d'exécutions dépendent essentiellement de l'affichage des valeurs du tableau.
La version 2 de recherche semble un peu plus rapide.

### Discussion des résultats préalables

Explications précises et succinctes sur ce que les limites des résultats
préalables et ce qu'ils ne permettent pas de vérifier.

## Etude approfondie

### Hypothèse

Expression précise et succincte d'une hypothèse.

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

- Temps d'exécution des deux programmes (et leur différence)
- Types de recherche de chaque programme (une standard et une recherche dichotomique)
- Comment le “Random” influe sur la performance des structures
- Comment améliorer la performance des deux structures
- Déterminer la classe de compléxité des structures

```
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