Bonjour la communauté,
Je suis entrain de tester hibernate et topLink en stage, je voudrais avoir des chiffres de performance de ces 2 technos. J'ai une simple table track(int id, int x, int y, DateTime date) sous MySQL5. Pour faire un update de 1000 lignes je met entre 218ms et 234 ms avec toplink et 340 ms avec hibernate. J'utilise une machine pas mal, 8 coeurs et j'ai mis mon HeapSpace à 1024M. Ces chiffres me paraissent pas raisonnables, quand pensez-vous? Quelqu'un peut-il me dire quels seraient les meilleurs résultats qu'on puisse espérer. Ci-dessous ma méthode lente version topLink:
remarque: le flush par paquet augmente le temps d'exécution: bizarre.
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 public void updateTracksList(ArrayList<Track> listToUpdate) { EntityTransaction tx = em.getTransaction(); tx.begin(); int newX,newY; List<Track> tracksList = null; Timestamp lastupdatedate; tracksList = em.createQuery("select t from Track t").getResultList(); int i=0; for(Track track:tracksList){ newX = Math.abs(((new Random()).nextInt(10000))); newY = Math.abs(((new Random()).nextInt(10000))); lastupdatedate=new Timestamp(new Date().getTime()); track.setX(newX); track.setY(newY); track.setLastupdatedate(lastupdatedate); //em.flush(); /* if(i % 100 == 0){ em.flush(); } */ i++; } tx.commit(); }
Merci d'avance.
Partager