• [^] # Re: Aie mes yeux...

    Posté par . En réponse au lien Nim plus rapide que C++ sur du ray tracing. Évalué à 1.

    En fait il n'y a pas grand chose à tirer d'un benchmark qui ne donne qu'une valeur (ou un moyenne sur plusieurs lancements). Est-ce que ça vient d'un overhead initial qui est constant ? Vu comme les résultats sont proches (je suis même pas certains qu'on ne soit pas dans la variance) il est possible que le moindre changement de paramètre donne un effet dans un sens ou un autre. Du coup je ne vois pas trop qu'est-ce que l'on peut tirer de ce bench.

    C'est justement ce qui est intéressant, si je présentais l'article sans le benchmark, le reproche serait "Mais quid de la performance, est-ce que Nim joue dans la même classe que C ou C++?". Ce benchmark le prouve, le code Nim ou C ou C++ ont le même ordre de grandeur en performance. J'irai même plus loin, "toute performance atteignable en C est également atteignable en Nim". Maintenant + ou - 2% ne va pas changer la donne pour la majorité des gens, c'est là où la deuxième partie intervient.

    Sincèrement la seconde partie m'a vraiment intéressée, c'est juste le bench qui en soit ne donne pas assez d'info que je lise ou non le code n'y changera rien.

    Le but du bench à la base est de valider que ma librairie de parallélisme Weave scale a minima comme OpenMP. Étant donné l'implémentation, je suis en fait étonné qu'il y ait une différence de plus de 1% en single-threaded entre le code C++ ou Nim. Je ne m'apesantis pas dessus justement parce que la présentation du bench avait pour but de régler le sort de "l'éléphant" pour tout nouveau langage (plus rapide que C?) et ensuite passer dans le vif du sujet, les fonctionnalités uniques.

    Je fournis plus d'analyse sur la partie multithreadée du bench ici https://github.com/mratsim/weave/tree/master/demos/raytracing.
    Le bench single-threadé est pour moi une baseline (i.e. s'il y a un écart important mon code est buggué) mais utilisée ici pour rassurer quant à la performance, les personnes familières avec Nim savent que porter 1->1 du code C ou C++ (sans inheritance) en Nim donne les mêmes performances peu ou prou quelques pourcents.