Appel constructeur BigInteger (java.Math.BigInteger)
Bonjour,
Je sais pas si vous avez déjà rencontré ce problème mais je génère de grands nombres premiers aléatoires grâce à la classe BigInteger.
Cependant, le premier appel (que ce soit un grand ou un petit nombre) a généré prend énormément de temps. En l’occurrence ici 5 sec pour un nombre aléatoire de 2 bit!
Code:
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
|
BigInteger m;
long start;
long end;
long time=0;
SecureRandom rand = SecureRandom.getInstance("SHA1PRNG");
start = System.currentTimeMillis();
m = new BigInteger(1, rand);
end = System.currentTimeMillis();
System.out.println("random number generation time was " + (end - start) + " ms.");
for(int i = 1; i <= 10; i++){
m = null;
start = System.currentTimeMillis();
m = new BigInteger(512, Integer.MAX_VALUE ,rand);
end = System.currentTimeMillis();
time += (end-start);
System.out.println("random number " + i + " generation time was " + (end - start)+ " ms.");
}
System.out.println("random number generation time was " + time + " ms. Average = " + (time/10) + " ms"); |
Voici les résultats
random number generation time was 5003 ms.
random number 1 generation time was 118 ms.
random number 2 generation time was 88 ms.
random number 3 generation time was 145 ms.
random number 4 generation time was 93 ms.
random number 5 generation time was 179 ms.
random number 6 generation time was 491 ms.
random number 7 generation time was 87 ms.
random number 8 generation time was 65 ms.
random number 9 generation time was 49 ms.
random number 10 generation time was 385 ms.
random number generation time was 1700 ms. Average = 170 ms
Aucune idée?
merci d'avance