Voila, j'ai un grand tableau de double qu'on notera data,
J'applique un traitement lourd sur chaque element du data
Afin d'optimiser ce traitement qui dure quelques secondes (15s), j'ai pensé à utiliser le multi-threading, çad diviser le traitement sur plusieurs threads et chaque thread pas s'occuper d'une partie du tableau;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 double[] data; remplirData(); for(int i=0 ; i<data.length; i++){ double resultat = traitementlourd(data[i]); }
Je croyais que ce code va parralléliser les traitements et j'obtiendrai un certain gain de perfs. Mais voilà, les deux threads s'executent chaqune en 15 secondes . Lorsque je lance un seul : 7s
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 ouble[] data; remplirData(); ExecutorService executor = Executors.newFixedThreadPool(2); int size = data.length; TraitementWorker worker1 = new TraitementWorker(0, size / 2); TraitementWorker worker2 = new TraitementWorker(size /2 +1 ,size - 1); executor.execute(worker1); executor.execute(worker2); executor.shutdown();
Est-ce que mon raisonnement est faux ou c'est qq chose d'autre ?
Partager