Programmation concurrente pour Ruby avec eldritch
Ce matin j’ai découvert la gem eldritch, pour faire de la programmation concurrente. Son API m’a paru vraiment simple et élégante. Ce soir j’ai seulement 5 minutes pour faire un premier test, alors on y va sans fioritures.
Tout d’abord, je vais utiliser Rubinius, puisqu’un ruby MRI ne permet pas l’utilisation de plusieurs coeurs.
$ rvm use rbx-2.0.0
Using /home/xavier/.rvm/gems/rbx-2.0.0
Ensuite, installation de la gem:
gem install eldritch
Il me faut un programme simple pour tester rapidement. Le voici:
Je simule deux méthodes assez longues grâce à sleep(2)
, qui endort le
programme pendant 2 secondes. Le temps d’exécution est conforme à mes
attentes:
$ time ruby eldritch.rb
1
2
real 0m4.821s
Maintenant on va utiliser la gem eldritch et son concept de tâche pour réécrire le programme:
Et voici le résultat:
$ time ruby eldritch.rb
1
2
real 0m2.869s
Tada ! Mes deux tâches ont tournées en parallèle.
Ça me plait ce concept de tâche. Mais ce n’était qu’un premier test rapide, eldritch nous réserve encore de bonne surprises. J’espère pouvoir tester le reste demain.
À demain.