[Squeak-fr] Performances sur shootout
Jean-François LEFEVRE
jflefevre at sqli.com
Mer 11 Juin 11:22:31 UTC 2008
Bonjour,
J'ajouterai deux choses :
- les benchs en question sont écrits par différentes personnes plus ou
moins habile à optimiser
le code, c'est à dire à pratiquer ce sport qu'est la chasse à la
microseconde. Le choix d'un
message plutôt qu'un autre peut entrainer des 'dramatic improves'
comme disent les américains
- la plupart des ces benchs semblent basés sur du calcul, en général en
double précision.
Les calculs sont par nature couteux en Smalltalk puisque traités par
envoi de message
et gérés réellement comme des objets dans le cas des float et double.
Pour optimiser, la plupart de ces messages sont des primitives mais
on ne se rend pas
toujours compte si on passe par une primitive ou pas.
Prenons par exemple : 2.2 + 3
En VisualWorks comme en Squeak on tombe directement sur une
primitive
Inversons maintenant : 3 + 2.2
En VisualWorks comme en Squeak, la primitive échoue et on part sur
du code Smalltalk
Ici la gestion est différente en Squeak et VisualWorks.
VisualWorks utilise une technique de double dispatching (nécessite
de définir beaucoup de
messages mais on retombe rapidement sur une primitive).
Dans le cas de Squeak, que je connais beaucoup moins, il semble
qu'on passe par un peu
plus de message (test puis conversion suivie d'un perform:)
Sans doute, ces quelques messages insignifiant finissent par peser
dans un bench qui fait des
centaine de milliers de messages de calcul.
En tout cas, merci pour m'avoir fait découvrir ce site de bench ;-)
Jean-François LEFEVRE
Serge Stinckwich a écrit :
> Le 11 juin 2008 11:05, Bertrand Mansion <golgote at mamasam.com> a écrit :
>
>> Bonjour,
>>
>> Je souhaitais savoir s'il y avait des raisons "triviales" pour lesquelles
>> les performances de Squeak étaient aussi "faibles" comparées à d'autres
>> langages ou d'autres versions de Smalltalk ? Je m'appuie sur les résultats
>> suivants:
>> <http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=squeak&lang2=vw>
>> qui ne sont pas forcément corrects, d'où ma question. J'ai comparé avec Lua
>> qui est mon langage de prédilection, mais les performances sont également
>> "faibles" par rapport à d'autres langages de script comme Python.
>>
>>
>
> Bonjour,
> VW est une implémentation commerciale très efficace de Smalltalk, qui
> utilise normalement un JIT. C'est normal qu'elle soit bcp plus
> performante que la VM de Squeak.
> Les différences entre Squeak et Python sont bcp plus faible. Squeak
> est souvent plus rapide que Ruby.
> Après il faudrait faire une analyse fine : quel compilateur gcc
> utilisé pour la VM, comment sont réalisé les benchmarks. Le problème
> des bench c'est qu'il mesure des performances sur des problèmes types
> qui ne reflètent pas forcement un usage quotidien.
>
> Cordialement,
>
Plus d'informations sur la liste de diffusion Squeak-fr