Bonjour,
La classe ci-dessous possède une méthode permettant de renouveler 500 000 fois l'opération consistant à trouver sept nombres différents au hasard.
En appelant cette méthode quatre fois de suite, on s'aperçoit que la première exécution de la méthode semble jusqu'à 50 % plus coûteuse (en temps).
Savez-vous pourquoi ?Essai n°1 : 187 ms
Essai n°2 : 125 ms
Essai n°3 : 110 ms
Essai n°4 : 109 ms
En vous remerciant par avance pour votre aide,
Cordialement,
Nicolas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 import java.util.Random; public class Test { private static final Random RANDOM = new Random(); private static void findSevenDifferentNumbersAtRandom_N_times() { final int MAX = 49; for (int i = 0; i < 500000; i++) { int id1 = RANDOM.nextInt(MAX + 1); int id2 = id1; while (id2 == id1) { id2 = RANDOM.nextInt(MAX + 1); } int id3 = id2; while ((id3 == id2) || (id3 == id1)) { id3 = RANDOM.nextInt(MAX + 1); } int id4 = id3; while ((id4 == id3) || (id4 == id2) || (id4 == id1)) { id4 = RANDOM.nextInt(MAX + 1); } int id5 = id4; while ((id5 == id4) || (id5 == id3) || (id5 == id2) || (id5 == id1)) { id5 = RANDOM.nextInt(MAX + 1); } int id6 = id5; while ((id6 == id5) || (id6 == id4) || (id6 == id3) || (id6 == id2) || (id6 == id1)) { id6 = RANDOM.nextInt(MAX + 1); } int id7 = id6; while ((id7 == id6) || (id7 == id5) || (id7 == id4) || (id7 == id3) || (id7 == id2) || (id7 == id1)) { id7 = RANDOM.nextInt(MAX + 1); } } } public static void main(String[] args) { long time0, durationInMilliseconds; for (int i = 1; i <= 4; i++) { time0 = System.currentTimeMillis(); findSevenDifferentNumbersAtRandom_N_times(); durationInMilliseconds = System.currentTimeMillis() - time0; System.out.println("Essai n°" + i + " : " + durationInMilliseconds + " ms"); } } }
Partager