[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