Bonjour,
pour des soucis d'optimisation, je suis en train de me demander quelle méthode utiliser pour récupérer un Integer.
le valueOf(monInt) ou le new Integer(monInt) ?
j'ai effectué un test unitaire et le valueOf semble "plus" long.
résultat :
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 import junit.framework.TestCase; public class TestValueOf extends TestCase { public void testValueOf() { final long start = System.currentTimeMillis(); for (int i = 0; i <= 300000000; i++) { final int monInt = 10000; final Integer t = Integer.valueOf(monInt); } final long end = System.currentTimeMillis(); System.out.println(end - start); } public void testNewInteger() { final long start = System.currentTimeMillis(); for (int i = 0; i <= 300000000; i++) { final int monInt = 10000; final Integer t = new Integer(monInt); } final long end = System.currentTimeMillis(); System.out.println(end - start); } }
6560 ms pour le valueOf()
6186 ms pour le new Integer()
alors :
- Quel est l'avantage du valueOf ?
- Quel est l'avantage du cache du valueOf ?
- Dans quel cas l'utiliser plutôt que de créer une nouvelle instance ?
j'ai lu cet article :
http://tech.puredanger.com/2007/02/01/valueof/
et je constate que je ne suis pas le seul à me poser la question.
quel est votre avis ?
merci
Partager