Skip to content
Snippets Groups Projects
Commit 7094693e authored by KLEIN ISABELLE's avatar KLEIN ISABELLE
Browse files

ajout des fichiers

parent e03ea21e
Branches
No related merge requests found
File added
File added
NombreEssais Fonction Structure OrdreGrandeur TempsUtilisateur TempsMemoire
1 1 1 10 0.52 41404
1 1 1 100 0.49 41108
1 1 1 1000 0.44 44540
1 1 1 10000 0.55 41168
1 1 1 100000 0.49 43624
1 1 2 10 0.50 43096
1 1 2 100 0.52 44804
1 1 2 1000 0.49 40932
1 1 2 10000 0.52 43308
1 1 2 100000 0.42 44716
1 2 1 10 0.43 42952
1 2 1 100 0.47 46920
1 2 1 1000 0.51 41564
1 2 1 10000 0.50 45004
1 2 1 100000 0.51 43096
1 2 2 10 0.55 40920
1 2 2 100 0.48 41332
1 2 2 1000 0.57 44448
1 2 2 10000 0.56 44928
1 2 2 100000 0.47 42504
1 3 1 10 0.48 43076
1 3 1 100 0.51 41656
1 3 1 1000 0.51 41484
1 3 1 10000 0.55 45044
1 3 1 100000 0.45 42760
1 3 2 10 0.55 43396
1 3 2 100 0.51 40920
1 3 2 1000 0.53 44296
1 3 2 10000 0.45 44640
1 3 2 100000 0.46 41376
1 4 1 10 0.52 44416
1 4 1 100 0.51 40808
1 4 1 1000 0.48 42900
1 4 1 10000 0.48 44808
1 4 1 100000 0.54 47028
1 4 2 10 0.49 42912
1 4 2 100 0.59 48072
1 4 2 1000 0.49 44576
1 4 2 10000 0.50 43608
1 4 2 100000 0.45 42632
1 5 1 10 0.53 44956
1 5 1 100 0.47 44724
1 5 1 1000 0.50 44704
1 5 1 10000 0.48 41176
1 5 1 100000 0.57 41440
1 5 2 10 0.52 42996
1 5 2 100 0.53 41536
1 5 2 1000 0.51 43576
1 5 2 10000 0.48 40996
1 5 2 100000 0.53 40784
5 5 1 10 0.47 40996
5 5 1 100 0.45 43080
5 5 1 1000 0.52 41508
5 5 1 10000 0.53 45220
5 5 1 100000 0.51 45136
5 5 2 10 0.60 42032
5 5 2 100 0.50 42600
5 5 2 1000 0.50 44800
5 5 2 10000 0.51 42448
5 5 2 100000 0.50 41196
5 2 1 10 0.55 44428
5 2 1 100 0.54 44760
5 2 1 1000 0.57 43048
5 2 1 10000 0.48 41640
5 2 1 100000 0.52 42744
5 2 2 10 0.48 44948
5 2 2 100 0.48 41444
5 2 2 1000 0.46 41856
5 2 2 10000 0.44 44620
5 2 2 100000 0.53 41240
5 3 1 10 0.50 46592
5 3 1 100 0.47 44672
5 3 1 1000 0.46 41340
5 3 1 10000 0.44 41348
5 3 1 100000 0.45 41232
5 3 2 10 0.46 44864
5 3 2 100 0.43 40788
5 3 2 1000 0.49 41084
5 3 2 10000 0.46 43128
5 3 2 100000 0.48 43464
5 4 1 10 0.52 41104
5 4 1 100 0.49 44448
5 4 1 1000 0.50 42752
5 4 1 10000 0.43 44532
5 4 1 100000 0.52 42764
5 4 2 10 0.48 44384
5 4 2 100 0.47 45152
5 4 2 1000 0.47 41364
5 4 2 10000 0.47 41388
5 4 2 100000 0.49 41284
5 5 1 10 0.51 41172
5 5 1 100 0.46 40832
5 5 1 1000 0.46 42412
5 5 1 10000 0.53 46892
5 5 1 100000 0.51 44728
5 5 2 10 0.47 44772
5 5 2 100 0.47 44540
5 5 2 1000 0.49 43264
5 5 2 10000 0.51 44572
5 5 2 100000 0.51 42744
10 5 1 10 0.42 41132
10 5 1 100 0.55 41204
10 5 1 1000 0.49 45104
10 5 1 10000 0.48 44500
10 5 1 100000 0.50 43060
10 5 2 10 0.48 43184
10 5 2 100 0.48 47208
10 5 2 1000 0.51 40904
10 5 2 10000 0.46 43220
10 5 2 100000 0.50 44608
10 2 1 10 0.48 42804
10 2 1 100 0.44 44796
10 2 1 1000 0.51 44952
10 2 1 10000 0.57 42364
10 2 1 100000 0.51 41044
10 2 2 10 0.52 41544
10 2 2 100 0.46 41372
10 2 2 1000 0.49 40996
10 2 2 10000 0.48 47180
10 2 2 100000 0.47 41056
10 3 1 10 0.51 41212
10 3 1 100 0.45 41360
10 3 1 1000 0.46 43404
10 3 1 10000 0.54 44508
10 3 1 100000 0.46 42576
10 3 2 10 0.47 41040
10 3 2 100 0.50 45288
10 3 2 1000 0.46 44904
10 3 2 10000 0.52 46608
10 3 2 100000 0.49 44724
10 4 1 10 0.47 44764
10 4 1 100 0.45 43400
10 4 1 1000 0.49 41292
10 4 1 10000 0.49 44572
10 4 1 100000 0.44 43980
10 4 2 10 0.46 44500
10 4 2 100 0.52 40900
10 4 2 1000 0.48 43008
10 4 2 10000 0.50 41144
10 4 2 100000 0.49 41036
10 5 1 10 0.51 41076
10 5 1 100 0.48 41092
10 5 1 1000 0.51 42632
10 5 1 10000 0.48 41496
10 5 1 100000 0.49 44572
10 5 2 10 0.54 43568
10 5 2 100 0.52 43108
10 5 2 1000 0.49 42832
10 5 2 10000 0.53 43492
10 5 2 100000 0.48 41068
50 5 1 10 0.53 41452
50 5 1 100 0.54 43624
50 5 1 1000 0.57 45048
50 5 1 10000 0.49 44824
50 5 1 100000 0.51 41092
50 5 2 10 0.53 44940
50 5 2 100 0.53 44992
50 5 2 1000 0.50 40816
50 5 2 10000 0.46 44972
50 5 2 100000 0.44 45012
50 2 1 10 0.44 41252
50 2 1 100 0.50 43104
50 2 1 1000 0.45 42848
50 2 1 10000 0.45 40648
50 2 1 100000 0.48 41072
50 2 2 10 0.53 44268
50 2 2 100 0.48 41292
50 2 2 1000 0.48 42688
50 2 2 10000 0.51 43632
50 2 2 100000 0.45 47176
50 3 1 10 0.48 41168
50 3 1 100 0.47 42324
50 3 1 1000 0.50 43332
50 3 1 10000 0.47 42552
50 3 1 100000 0.47 44812
50 3 2 10 0.48 44932
50 3 2 100 0.45 41208
50 3 2 1000 0.46 46484
50 3 2 10000 0.48 44324
50 3 2 100000 0.45 43248
50 4 1 10 0.49 46920
50 4 1 100 0.49 45112
50 4 1 1000 0.51 46820
50 4 1 10000 0.46 42716
50 4 1 100000 0.48 45264
50 4 2 10 0.50 41024
50 4 2 100 0.48 42856
50 4 2 1000 0.48 42900
50 4 2 10000 0.49 44536
50 4 2 100000 0.41 41300
50 5 1 10 0.49 42564
50 5 1 100 0.48 44844
50 5 1 1000 0.46 43220
50 5 1 10000 0.53 41328
50 5 1 100000 0.48 41080
50 5 2 10 0.50 43444
50 5 2 100 0.50 47044
50 5 2 1000 0.47 43492
50 5 2 10000 0.51 44812
50 5 2 100000 0.45 44840
100 5 1 10 0.48 44732
100 5 1 100 0.46 44708
100 5 1 1000 0.52 41200
100 5 1 10000 0.51 40992
100 5 1 100000 0.50 42960
100 5 2 10 0.52 43424
100 5 2 100 0.48 43944
100 5 2 1000 0.52 43052
100 5 2 10000 0.48 41196
100 5 2 100000 0.42 44680
100 2 1 10 0.51 41544
100 2 1 100 0.49 45284
100 2 1 1000 0.43 40820
100 2 1 10000 0.46 44464
100 2 1 100000 0.44 46848
100 2 2 10 0.47 45056
100 2 2 100 0.46 44436
100 2 2 1000 0.46 44748
100 2 2 10000 0.48 41208
100 2 2 100000 0.48 40944
100 3 1 10 0.45 42704
100 3 1 100 0.48 44868
100 3 1 1000 0.46 46916
100 3 1 10000 0.47 40816
100 3 1 100000 0.46 41032
100 3 2 10 0.47 46668
100 3 2 100 0.52 41456
100 3 2 1000 0.49 42676
100 3 2 10000 0.51 41068
100 3 2 100000 0.45 44504
100 4 1 10 0.48 44500
100 4 1 100 0.50 44592
100 4 1 1000 0.48 44544
100 4 1 10000 0.56 41080
100 4 1 100000 0.53 42956
100 4 2 10 0.50 44984
100 4 2 100 0.55 46620
100 4 2 1000 0.46 44656
100 4 2 10000 0.55 45340
100 4 2 100000 0.51 44680
100 5 1 10 0.48 40888
100 5 1 100 0.48 41004
100 5 1 1000 0.49 45056
100 5 1 10000 0.50 43036
100 5 1 100000 0.52 44676
100 5 2 10 0.60 43156
100 5 2 100 0.59 42732
100 5 2 1000 0.49 43692
100 5 2 10000 0.53 44732
100 5 2 100000 0.56 44492
500 5 1 10 0.58 41540
500 5 1 100 0.58 44832
500 5 1 1000 0.52 43604
500 5 1 10000 0.51 44924
500 5 1 100000 0.50 41228
500 5 2 10 0.70 43448
500 5 2 100 0.67 45112
500 5 2 1000 0.63 45144
500 5 2 10000 0.65 41856
500 5 2 100000 0.66 43228
500 2 1 10 0.53 41124
500 2 1 100 0.54 43268
500 2 1 1000 0.52 43020
500 2 1 10000 0.55 42912
500 2 1 100000 0.48 42596
500 2 2 10 0.50 41336
500 2 2 100 0.47 41632
500 2 2 1000 0.50 45052
500 2 2 10000 0.53 41300
500 2 2 100000 0.45 43056
500 3 1 10 0.49 41204
500 3 1 100 0.50 43160
500 3 1 1000 0.51 41532
500 3 1 10000 0.48 42620
500 3 1 100000 0.48 42616
500 3 2 10 0.49 41556
500 3 2 100 0.49 45188
500 3 2 1000 0.51 44912
500 3 2 10000 0.56 42048
500 3 2 100000 0.51 44880
500 4 1 10 0.48 47268
500 4 1 100 0.52 41040
500 4 1 1000 0.50 43016
500 4 1 10000 0.45 41160
500 4 1 100000 0.47 46876
500 4 2 10 0.46 44448
500 4 2 100 0.51 41416
500 4 2 1000 0.49 41284
500 4 2 10000 0.51 44812
500 4 2 100000 0.49 40796
500 5 1 10 0.56 42924
500 5 1 100 0.53 43436
500 5 1 1000 0.55 41564
500 5 1 10000 0.49 43344
500 5 1 100000 0.54 41508
500 5 2 10 0.66 41772
500 5 2 100 0.63 47440
500 5 2 1000 0.60 46824
500 5 2 10000 0.60 41432
500 5 2 100000 0.59 43068
1000 5 1 10 0.54 41372
1000 5 1 100 0.51 44936
1000 5 1 1000 0.55 43408
1000 5 1 10000 0.57 43124
1000 5 1 100000 0.50 41252
1000 5 2 10 1.28 44816
1000 5 2 100 1.25 41088
1000 5 2 1000 1.40 45284
1000 5 2 10000 1.37 41548
1000 5 2 100000 1.46 42684
1000 2 1 10 0.55 43228
1000 2 1 100 0.51 44660
1000 2 1 1000 0.51 44596
1000 2 1 10000 0.49 43088
1000 2 1 100000 0.47 41148
1000 2 2 10 0.51 41740
1000 2 2 100 0.49 44536
1000 2 2 1000 0.49 43916
1000 2 2 10000 0.51 41328
1000 2 2 100000 0.49 43552
1000 3 1 10 0.46 41072
1000 3 1 100 0.52 44428
1000 3 1 1000 0.50 40752
1000 3 1 10000 0.42 44716
1000 3 1 100000 0.52 44756
1000 3 2 10 0.49 42940
1000 3 2 100 0.47 41596
1000 3 2 1000 0.50 45140
1000 3 2 10000 0.44 45004
1000 3 2 100000 0.50 46544
1000 4 1 10 0.51 41200
1000 4 1 100 0.49 41700
1000 4 1 1000 0.52 42816
1000 4 1 10000 0.48 44472
1000 4 1 100000 0.54 45136
1000 4 2 10 0.51 44604
1000 4 2 100 0.53 41364
1000 4 2 1000 0.54 42952
1000 4 2 10000 0.57 41108
1000 4 2 100000 0.47 43336
1000 5 1 10 0.50 43900
1000 5 1 100 0.55 42736
1000 5 1 1000 0.56 41544
1000 5 1 10000 0.61 42948
1000 5 1 100000 0.57 45048
1000 5 2 10 1.37 43480
1000 5 2 100 1.35 44628
1000 5 2 1000 1.30 44484
1000 5 2 10000 1.43 45184
1000 5 2 100000 1.36 43404
2500 5 1 10 0.53 41212
2500 5 1 100 0.57 45248
2500 5 1 1000 0.59 44776
2500 5 1 10000 0.59 43588
2500 5 1 100000 0.57 45204
2500 5 2 10 14.66 43008
2500 5 2 100 15.60 43920
2500 5 2 1000 15.15 41928
2500 5 2 10000 14.16 41456
2500 5 2 100000 13.99 41912
2500 2 1 10 0.49 46968
2500 2 1 100 0.47 45116
2500 2 1 1000 0.49 42468
2500 2 1 10000 0.46 41124
2500 2 1 100000 0.52 43708
2500 2 2 10 0.51 42812
2500 2 2 100 0.53 43192
2500 2 2 1000 0.46 44404
2500 2 2 10000 0.48 41732
2500 2 2 100000 0.46 41556
2500 3 1 10 0.47 44776
2500 3 1 100 0.51 41216
2500 3 1 1000 0.52 40960
2500 3 1 10000 0.54 41244
2500 3 1 100000 0.55 44476
2500 3 2 10 0.50 41556
2500 3 2 100 0.49 44368
2500 3 2 1000 0.54 43004
2500 3 2 10000 0.43 43184
2500 3 2 100000 0.45 41624
2500 4 1 10 0.54 44604
2500 4 1 100 0.47 43164
2500 4 1 1000 0.47 44660
2500 4 1 10000 0.53 41156
2500 4 1 100000 0.50 41532
2500 4 2 10 0.46 41352
2500 4 2 100 0.45 44612
2500 4 2 1000 0.48 45072
2500 4 2 10000 0.51 44660
2500 4 2 100000 0.52 44740
2500 5 1 10 0.57 44952
2500 5 1 100 0.56 43700
2500 5 1 1000 0.58 46644
2500 5 1 10000 0.54 44564
2500 5 1 100000 0.58 43080
2500 5 2 10 13.74 41980
2500 5 2 100 13.91 45708
2500 5 2 1000 14.23 43768
2500 5 2 10000 14.98 41720
2500 5 2 100000 15.08 42344
5000 5 1 10 0.61 48708
5000 5 1 100 0.62 45360
5000 5 1 1000 0.67 46724
5000 5 1 10000 0.61 44896
5000 5 1 100000 0.69 43336
5000 5 2 10 109.28 48824
5000 5 2 100 110.60 49568
5000 5 2 1000 109.23 44496
5000 5 2 10000 112.38 45724
5000 5 2 100000 110.22 47764
5000 2 1 10 0.48 44628
5000 2 1 100 0.48 41288
5000 2 1 1000 0.45 44512
5000 2 1 10000 0.46 44904
5000 2 1 100000 0.47 42632
5000 2 2 10 0.53 43004
5000 2 2 100 0.48 41280
5000 2 2 1000 0.49 41548
5000 2 2 10000 0.50 41668
5000 2 2 100000 0.47 43520
5000 3 1 10 0.56 43208
5000 3 1 100 0.54 41548
5000 3 1 1000 0.57 44828
5000 3 1 10000 0.59 40876
5000 3 1 100000 0.60 44812
5000 3 2 10 0.49 47308
5000 3 2 100 0.60 41192
5000 3 2 1000 0.53 41028
5000 3 2 10000 0.53 41588
5000 3 2 100000 0.52 44780
5000 4 1 10 0.52 40948
5000 4 1 100 0.50 44516
5000 4 1 1000 0.50 44536
5000 4 1 10000 0.50 46484
5000 4 1 100000 0.46 44700
5000 4 2 10 0.50 43192
5000 4 2 100 0.50 44760
5000 4 2 1000 0.49 44712
5000 4 2 10000 0.53 42952
5000 4 2 100000 0.49 41384
5000 5 1 10 0.55 46700
5000 5 1 100 0.60 44988
5000 5 1 1000 0.65 46672
5000 5 1 10000 0.63 47384
5000 5 1 100000 0.68 43724
5000 5 2 10 107.71 47192
5000 5 2 100 107.02 45476
5000 5 2 1000 113.48 44240
5000 5 2 10000 115.65 49176
5000 5 2 100000 115.59 49312
7500 5 1 10 0.64 43420
7500 5 1 100 0.65 46764
7500 5 1 1000 0.71 47360
7500 5 1 10000 0.65 45284
7500 5 1 100000 0.72 45640
7500 5 2 10 367.92 43416
7500 5 2 100 366.55 43632
7500 5 2 1000 381.35 44412
7500 5 2 10000 368.96 43788
7500 5 2 100000 367.69 47476
7500 2 1 10 0.54 43184
7500 2 1 100 0.54 43896
7500 2 1 1000 0.50 47084
7500 2 1 10000 0.49 41292
7500 2 1 100000 0.58 44724
7500 2 2 10 0.52 43616
7500 2 2 100 0.54 45688
7500 2 2 1000 0.58 43332
7500 2 2 10000 0.55 46876
7500 2 2 100000 0.62 47264
7500 3 1 10 0.65 44868
7500 3 1 100 0.58 45012
7500 3 1 1000 0.62 47248
7500 3 1 10000 0.59 43748
7500 3 1 100000 0.56 44700
7500 3 2 10 0.57 45988
7500 3 2 100 0.56 49500
7500 3 2 1000 0.60 47892
7500 3 2 10000 0.59 43696
7500 3 2 100000 0.60 45380
7500 4 1 10 0.51 41292
7500 4 1 100 0.53 41480
7500 4 1 1000 0.58 44296
7500 4 1 10000 0.51 41152
7500 4 1 100000 0.53 41364
7500 4 2 10 0.58 45784
7500 4 2 100 0.55 45524
7500 4 2 1000 0.60 47424
7500 4 2 10000 0.53 47676
7500 4 2 100000 0.55 43720
7500 5 1 10 0.63 47340
7500 5 1 100 0.69 43520
7500 5 1 1000 0.69 43428
7500 5 1 10000 0.68 45176
7500 5 1 100000 0.66 45132
7500 5 2 10 365.76 47332
7500 5 2 100 369.40 43800
7500 5 2 1000 371.40 47628
7500 5 2 10000 378.26 47688
7500 5 2 100000 370.94 44352
Projet/graph_mem2.png

80.5 KiB

Projet/graph_time.png

114 KiB

package p4a;
// ouvrir un terminal au niveau jdev/P4a/P4a/src
//Dans le terminal, au niveau du package p4a, on utilise les lignes de commandes suivantes :
// javac p4a/*.java
// java p4a.Main
//teste de l'arraylist de taille 1, fonction d'ajout en tete
// java p4a.Main 1 1 1 1
public class Main {
/**
* @attributs
*/
private static int nbrEssais = 0; //représente le nombre d'essais de la fonction
private static int fonction = 0; //représente la fonction testée
private static int structure = 0; //représente la structure sur laquelle on va effectuer des tests
private static int affichage = 0; //entier qui détermine si on affichera le résultat ou non
private static int ordre = 1000; //entier qui détermine l'ordre de grandeur des éléments contenus dans la structure de donnée
private static String com=""; // commentaire affiché pour répeter ce qu'on utilise comme structure, comme fonction et comme nombre d'essai.
private static Structure s; // c'est sur s que l'on va effectuer les tests
/**
* @programme principale
*/
public static void main(String[] args) {
int i = 0;
if (args.length < 3 || args.length > 5) {
System.out.println("\n Main [nbrEssais] [Fonction] [Structure] [Option: affichage] [Option: ordre de grandeur]\nLe nombre d'argument n'est pas valide.\n Fonctions : \n 1. Ajouter en tête \n 2. Ajouter en Queue\n 3. Supprimer en tête\n 4. Supprimer en queue\n 5. Rechercher\nStructure :\n 1. ArrayList\n 2. LinkedList\nAffichage : \n 1.Oui");
}
else {
// les 3 premiers paramètres sot toujours renseignés
nbrEssais = Integer.parseInt(args[0]);
fonction = Integer.parseInt(args[1]);
structure = Integer.parseInt(args[2]);
// si length =4, soit on veut l'affichage en plus , soit on veut l'ordre de grandeur.
if (args.length == 4 ){
if (Integer.parseInt(args[3])==1){
affichage = 1;
}
else {
ordre = Integer.parseInt(args[3]);
}
}
if (args.length == 5 ) {
affichage = Integer.parseInt(args[3]);
ordre = Integer.parseInt(args[4]);
}
if (ordre <1){
ordre =1000;
System.out.println("L'ordre est invalide, il sera par conséquent par défault (1000)\n");
}
if (nbrEssais < 1) {
System.out.println("le nombre d'essais est invalide.");
} else {
//System.out.println(" nombre d'essais :" + nbrEssais + ", fonction numéro :" + fonction + ", structure :" + structure + ", affichage :" + affichage);
com = com+"Structure : ";
switch (structure) {
case 1:
s = new SArrayList(ordre);
com = com+"ArrayList";
break;
case 2:
s = new SLinkedList(ordre);
com = com+"Linked List";
break;
default:
s = new SArrayList(ordre);
com = com+"ArrayList";
break;
}
com = com+", Fonction : ";
switch (fonction) {
case 1:
s.ajoutEnTete(nbrEssais);
com = com+"ajout en tête de";
break;
case 2:
s.ajoutEnQueue(nbrEssais);
com = com+"ajout en queue de";
break;
case 3:
s.ajoutEnTete(nbrEssais);
s.supprEnTete(nbrEssais);
com = com+"suppression en tete de";
break;
case 4:
s.ajoutEnTete(nbrEssais);
s.supprEnQueue(nbrEssais);
com = com+"suppression en queue de";
break;
case 5:
s.ajoutEnTete(nbrEssais);
com = com+"recherche de 1 élement parmi";
for (i = 0; i < nbrEssais; i++) {
s.rechercher(Math.random() * ordre);
}
break;
default:
break;
}
com = com+" "+nbrEssais+" éléments.";
if (affichage == 1) {
System.out.println(com);
s.afficher();
}
}
}
}
}
package p4a;
import java.util.ArrayList;
public class SArrayList implements Structure{
/**
* @attributs
*/
private ArrayList<Double> al;
private int ordre=1000;
/**
* @constructeur
*/
public SArrayList(int ordre) {
al = new ArrayList<Double>();
this.ordre = ordre;
}
/**
* @méthodes
*/
public void ajoutEnTete(int nbElements){
for (int i = 0;i<nbElements;i++){
al.add(0,Math.random()*ordre);
}
}
public void ajoutEnQueue(int nbElements){
for (int i = 0;i<nbElements;i++){
al.add(Math.random()*ordre);
}
}
public void supprEnTete(int nbElements){
for (int i = 0;i<nbElements;i++){
al.remove(0);
}
}
public void supprEnQueue(int nbElements){
for (int i = 0;i<nbElements;i++){
al.remove(al.size()-1);
}
}
public int rechercher(Object e){
int trouve =-1;
for (int i=0; i < al.size(); i++){
if(al.get(i)==e){
trouve=i;
}
}
return trouve;
}
public void afficher(){
System.out.println("\n Structure ArrayList : ");
for (int i=0; i < al.size(); i++){
System.out.println(al.get(i)+", ");
}
}
}
package p4a;
import java.util.LinkedList;
public class SLinkedList implements Structure{
/**
* @attributs
*/
private LinkedList<Double> ll;
private int ordre=1000;
/**
* @constructeur
*/
public SLinkedList(int ordre) {
ll = new LinkedList<Double>();
this.ordre=ordre;
}
/**
* @méthodes
*/
public void ajoutEnTete(int nbElements){
for (int i = 0;i<nbElements;i++){
ll.add(0,Math.random()*ordre);
}
}
public void ajoutEnQueue(int nbElements){
for (int i = 0;i<nbElements;i++){
ll.add(Math.random()*ordre);
}
}
public void supprEnTete(int nbElements){
for (int i = 0;i<nbElements;i++){
ll.remove(0);
}
}
public void supprEnQueue(int nbElements){
for (int i = 0;i<nbElements;i++){
ll.remove(ll.size()-1);
}
}
public int rechercher(Object e){
int trouve =-1;
for (int i=0; i < ll.size(); i++){
if(ll.get(i)==e){
trouve=i;
}
}
return trouve;
}
public void afficher(){
System.out.println("\n Structure LinkedList : ");
for (int i=0; i < ll.size(); i++){
System.out.println(ll.get(i)+", ");
}
}
}
package p4a;
public interface Structure {
//fonctions d'ajout
public void ajoutEnTete(int nbElements);
public void ajoutEnQueue(int nbElements);
//fonctions de suppression
public void supprEnTete(int nbElements);
public void supprEnQueue(int nbElements);
//fonction de recherche :
// renvoie la position de l'élément si il est dans le tableau, -1 sinon
public int rechercher(Object e);
//fonction d'affichage de la structure de donnée
public void afficher();
}
Projet/perf.png

103 KiB

#!/bin/sh
if [ $#==5 ]
then
java p4a.Main $1 $2 $3 $4 $5 >/dev/null
elif [ $#=4 ]
then
java p4a.Main $1 $2 $3 $4 >/dev/null
elif [ $#=3 ]
then
java p4a.Main $1 $2 $3 >/dev/null
fi
#!/bin/bash
#https://ggplot2.tidyverse.org/
javac p4a/*.java
echo -e "NombreEssais\tFonction\tStructure\tOrdreGrandeur\tTempsUtilisateur\tTempsMemoire";
nbEssai[0]=1
nbEssai[1]=5
nbEssai[2]=10
nbEssai[3]=50
nbEssai[4]=100
nbEssai[5]=500
nbEssai[6]=1000
nbEssai[7]=2500
nbEssai[8]=5000
nbEssai[9]=7500
operation[0]=1
operation[1]=2
operation[2]=3
operation[3]=4
operation[4]=5
structure[0]=1
structure[1]=2
ordreGrandeur[0]=10
ordreGrandeur[1]=100
ordreGrandeur[2]=1000
ordreGrandeur[3]=10000
ordreGrandeur[4]=100000
for nbE in ${nbEssai[*]}; do
for operation in ${operation[*]}; do
for type in ${structure[*]}; do
for ordre in ${ordreGrandeur[*]}; do
res=$((/usr/bin/time -f "\t%U\t%M" java p4a.Main $nbE $operation $type $ordre) 2>&1)
echo -e "$nbE\t$operation\t$type\t$ordre\t$res"
done
done
done
done
rm p4a/*.class
#ggplot(perf,aes(x=taille,y=temps))+geom_point() + geom_smooth()
#!/usr/bin/env Rscript
#cette commande permet de remplir la table de donnée stockée dans data.dat
#./perf3.sh | tee data.dat
library(ggplot2)
perf <- read.table("data.dat", header = TRUE )
ggplot(perf,aes(x=NombreEssais, y=TempsUtilisateur)) + geom_point() + facet_grid(OrdreGrandeur~Fonction)
ggsave("perf.png")
ggplot(perf,aes(x=NombreEssais, y=TempsUtilisateur, colour=TempsMemoire)) + geom_point() + geom_smooth() + facet_grid(Structure~Fonction)
ggsave("graph_time.png")
ggplot(perf,aes(x=NombreEssais, y=TempsUtilisateur, colour=Structure)) + geom_point() + geom_smooth()
ggsave("graph_mem2.png")
# P4a : Analyse de performances de différentes structures
# P4a : Analyse de performances de différentes structures
[Grille d'évaluation P4a](https://docs.google.com/spreadsheets/d/1x72glVEQHPx56Wr8G0RNQgfQXGX6xCsjms_6b7J6si0/edit?usp=sharing
)
## Problème
Description du Problème.
Notre but est de réaliser des tests de performance sur le temps d'éxecution et la mémoire utilisée selon la structure de données, la fonction testée, le nombre d’essais réalisés, et l'ordre de grandeur des éléments.
Il y a également deux options supplémentaires : une pour réaliser ou non un affichage, et l'autre pour donner l'ordre de grandeur des éléments du tableau.
Description de tous les paramètres exploratoires du problème
Paramètres :
- Le nombre d'essais (est attendu supérieur à 0)
- La fonction
- la structure
- l'option de l'ordre de grandeur
## Dispositif expérimental
### Application
[code source de l'application](chemin)
J'ai choisi de tester les classes ArrayList et LinkedList grâce à des fichiers en bash ainsi qu'à des classes de tests en Java.
Pour ce faire, j'ai réalisé une classe abstraite Structure comprenant les méthodes abstraites ajout en tête, en queue, suppression en tête, en queue, et recherche d'un nombre aléatoire parmi la structure.
Les méthodes de cette classe abstraite sont implémentées dans les classes de tests SArrayList et SLinkedList.
Enfin, une classe Main réalise les tests sur ces structures grâce aux paramètres qui lui sont fournis.
```
Description de l'application et des arguments
Paramètres :
- Le nombre d'essais (est attendu supérieur à 0)
- La fonction
- la structure
- l'option d'affichage
- l'option de l'ordre de grandeur
```
Le nombre d'essais doit être supérieur à 0.
```
Les fonctions :
1. Ajouter n éléments en tête
2. Ajouter n élément en queue
3. Supprimer n éléments en tête
4. Supprimer n éléments en queue
5. Rechercher un élément dans une structure de donnée de taille n
```
```
Les structures de données :
1. ArrayList
2. LinkedList
```
```
L'option d'affichage :
1. Affiché
2. Ou autre que 1 : ne s'affiche pas.
```
Je me suis rendue compte par la suite que l'affichage n'était utile que pour vérifié la validitée du code en début de développement, je ne l'ai donc plus utilisé par la suite sans pour autant le supprimer au cas ou j'aurais besoin de tester une nouvelle structure de donnée.
```
L'option de définition de l'ordre de grandeur des éléments contenus dans la structure doit être supérieur à 1,
sinon l'application retourne à son ordre de grandeur par défault :1000.
```
### Environnement de test
Description de la plateforme de test
J'ai testé les classes ArrayList et LinkedList grâce à des fichiers en bash ainsi qu'à des classes de tests en Java.
J'ai donc l'arborescence suivante:
```
Extrait pertinent de /proc/cpuinfo
Projet
-> p4a (dossier)
-> perf2.sh
-> perf3.sh
-> data.dat
```
```
p4a
-> Main.java
-> Structure.java
-> SArrayList.java
-> SLinkedList.java
```
### Description de la démarche systématique
Description de la démarche systématique et de l'espace d'exploration pour chaque paramètres.
Pour réaliser les tests et enregistrer les données ainsi que les graphiques, il suffit de tapper les lignes suivantes dans un terminal:
```
Suite des commandes, ou script, à exécuter pour produire les données.
./perf3.sh | tee data.dat
./plot.sh
```
Cependant, je ne vous cache pas que la première commande a mis plus d'une heure à s'éxecuter.
Sans même avoir réaliser de plot, on peut voir les lignes suivantes dans data.dat :
```
7500 5 1 10 0.63 47340
7500 5 1 100 0.69 43520
7500 5 1 1000 0.69 43428
7500 5 1 10000 0.68 45176
7500 5 1 100000 0.66 45132
7500 5 2 10 365.76 47332
7500 5 2 100 369.40 43800
7500 5 2 1000 371.40 47628
7500 5 2 10000 378.26 47688
7500 5 2 100000 370.94 44352
```
Ici, 7500 correspond aux nombres de recherches, 5 (deuxième colonne) correspond à la fonction de recherche dans une structure.
Dans la 3 ème colonne , le 1 correspond a la structure de l'ArrayList et le 2 à la LinkedList.
Les 10,100,...100000 (4ème colonne)correspond à l'ordre de grandeur de chaque élément de la structure.
Enfin, les deux dernières colonnes sont le temps utilisateur et la mémoire.
Ce que l'on remarque ici, est la différence monumentale de temps nécessaire entre les 5 premières et les 5 dernières lignes.
On voit tout de suite que pour de la structure LinkedList est beaucoup moins efficace.
## Résultats préalables
### Temps d'exécution
......@@ -46,9 +128,7 @@ Suite des commandes, ou script, à exécuter pour produire les données.
### 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
......@@ -60,17 +140,24 @@ préalables et ce qu'ils ne permettent pas de vérifier.
### Hypothèse
Expression précise et succincte d'une hypothèse.
Mon hypothèse :
### Protocole expérimental de vérification de l'hypothèse
Expression précise et succincte du protocole.
Pour refaire le jeu de test dans un fichier data.dat, enregistrer le dossier p4a et les fichiers perf2.sh et perf3.sh.
Ouvrez un terminal à l'emplacement des fichiers, et écrivez la commande suivante:
```
Suite des commandes, ou script, à exécuter pour produire les données.
./perf3.sh | tee data.dat
```
Pour réaliser les graphiques en fonction de data.dat obtenu précédemment, il faudra enregistrer le fichier plot.sh au même endroit que data.dat.
Dans un terminal, il suffira d'écrire la commande *./plot.sh*.
Enfin, vous obtiendrez les graphiques correspondants.
### Résultats expérimentaux
### Analyse des résultats expérimentaux
### Discussion des résultats expérimentaux
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment