Est-ce que GPars est vraiment si bien que ça ?

Depuis un moment, je vois apparaître GPars sur mon radar (ou plus exactement, dans des tweets envoyés par Guillaume Laforge).
Et comme les problèmes du project Euler sont souvent parallélisables, je me suis dit que c’était une bonne occasion de tester ça.
J’ai donc d’abord codé une version « standard » de la solution au problème 31, n’utilisant GPars que pour faire un bon gros collectParallel(…), avant d’écrire la version que voici qui fait non seulement du collectParallel, mais aussi du runForkJoin, ce qui est vraiment réjouissant.

 

 

Bon, j’aurais bien utilisé également Perf4J, pour remplacer mes bons vieux System.currentTimeMillis(), mais je n’ai pas trouvé comment. Et c’est bien dommage.
Cela dit GPars est de la belle ouvrage. Je me souviens encore avec émotion des ExecutorService et (encore longtemps avant), des infâmes Runnable à enquiller dans un Thread. A coté de ces horreurs, l’idée d’écrire GParsPool.withPool(2) {-> …} me remplit d’aise. Je dois toutefois légèrement nuancer mon propos. Comme cette question que j’ai posée sur StackOverflow le montre, l’API de GParsPool n’est pas totalement documentée sur le site de GPars (même si elle l’est en revanche sur le site de l’auteur, je dois d’ailleurs remercier encore ici sa réponse claire et rapide). Et ça, je dois bien l’avouer, c’est pénible.
Bon, arrétons-là.
J’ai quand même gagné un peu de temps d’exécution par rapport à la version initiale (particulièrement bourrine, je dois bien le reconnaître).
J’ai en revanche été nettement moins vite qu’une version totalement récursive du même code, ce qui est normal, puisqu’il y a bien plus de synchronisation. Ce que j’ai gagné, également, par rapport à la version récursive, c’est de l’empilement d’appel, puisque là, je fais beaucoup plus de passage de messages assynchrones, et beaucoup moins d’appels récursifs au même code.
La conclusion est quand même claire : GPars, au moins pour ce que j’en ai fait là (et ce que je vais en faire dans les problèmes suivants), c’est de la balle.
Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s