Arrêtez de tester avec Geekbench (et arrêtez de prendre ça comme référence)

A la sortie de chaque nouveau Mac (ou iPhone), c’est la même chose : tout le monde sort le seul benchmark disponible pour les plateformes Apple et compare les « performances » des appareils avec les autres. Et utiliser Geekbench est une mauvaise idée.

Je laisse la page en ligne parce qu’elle a été pas mal lie et liée, mais les remarques concernent essentiellement les vieilles versions de GeekBench. Sur les versions récentes (5.x en 2020), une partie des problèmes est réglé. Ça ne devrait pas empêcher d’essayer de valider les tests théoriques avec des essais pratiques, mais au moins le test est globalement efficace et fiable.

Geekbench n’est pas un test très intéressant ni très représentatif pour plusieurs raisons.

La première, c’est que c’est un test purement CPU, avec des limites sur ce qu’il teste. En gros, il va mesurer les possibilités de calcul du processeur, et c’est à peu près tout. C’est critiquable, parce qu’un ordinateur dépend de son CPU pour certaines tâches, mais aussi de son GPU et de son périphérique de stockage. Le résultat classique annoncé est la performance sur un coeur et la performance sur tous les coeurs, ce qui n’est pas très représentatif : un processeur avec beaucoup de coeurs va avoir un score énorme même si dans l’absolu il n’ira pas plus vite pour ce que fait le grand public vu qu’on dépend essentiellement des performances sur un ou deux coeurs dans un usage grand public.

La seconde, c’est que Geekbench n’est pas fiable dans l’absolu : les résultats varient énormément d’une machine à une autre et même parfois sur la même machine. D’abord parce que c’est un test CPU assez court (environ 1 minute sur ma machine avec Geekbench 2, 2 minutes avec Geekbench 3) et donc qu’un truc qui consomme du temps CPU de façon ponctuelle peut fausser le résultat, comme une pub, une sauvegarde Time Machine ou un accès réseau un peu lourd. Ensuite parce que les CPU Intel ont depuis quelques années un mode « Turbo » qui va jouer sur la fréquence du processeur en fonction de la charge et de la consommation et que le fonctionnement même du truc est rarement compris. Typiquement, les portables ont un mode qui permet d’augmenter la limite de TDP (la consommation en simplifiant) pendant au moins 30 secondes par exemple, et comme le test est cours le résultat peut être artificiellement trop élevé. Le Turbo varie aussi en fonction de l’usage du GPU sur les puces Intel, donc si un soft en arrière plan force sur la carte graphique même sans tourner (un onglet ouvert sur du WebGL est parfait pour ça), la fréquence de l’IGP augmente et le processeur ne peut pas atteindre sa fréquence maximale. Le Turbo est assez pernicieux avec un test court : si on n’effectue qu’un test, il risque d’être faussé par l’augmentation artificielle du TDP dans certains cas, mais si on fait plusieurs tests avec une moyenne, les résultats sont faussés parce que la température peut augmenter un peu trop et limiter le Turbo sur les derniers tests.

Point intéressant, les comparaisons sont parfois faites avec une certaines mauvaise foi ou en tout cas sans le recul nécessaire, deux exemples m’ont fait tiquer récemment.

Le premier explique que l’iMac Retina est plus rapide que le Mac Pro sur les performances sur un seul coeur en prenant en compte Geekbench. En fait, c’est idiot de s’extasier devant ce résultat, vu qu’il est attendu. Le Mac Pro n’est pas fait pour les performances sur un seul coeur (de fait, mieux vaut acheter un iMac) mais surtout c’est normal : le Mac Pro utilise un CPU de la génération précédente avec une fréquence plus faible. Pas besoin de prendre un test pour dire ça, en fait. Et je peux même vous dire qu’un Mac Pro en Haswell-E va avoir un meilleur score, je suis un devin.

Le second compare la dernière tablette de Google avec un Mac Pro 2012 et montre un résultat sur un seul coeur proche. C’est extrêmement fallacieux comme comparaison, pour pleins de raisons. La première, c’est que le Mac Pro 2012 a un CPU de début 2010 et que personne ne le précise, ce qui est pourtant important. La seconde, c’est que comparer les résultats Geekbench entre différents OS et différentes architectures (Android/ARM vs. OS X/Intel) est une mauvaise idée, parce qu’on ne connaît pas les détails exactes des tests et qu’il est très simple de trouver un test qui met en avant une architecture précise sur un point même si le reste est nul (nVidia est spécialiste de la chose).

Enfin, Geekbench a le défaut d’être très utilisé, ce qui incite certains constructeurs à tricher. Je vais être honnête, c’est essentiellement sous Android, mais il est assez facile de jouer sur la fréquence du processeur pour augmenter artificiellement le score.

Globalement (spoiler, c’est quand même en partie mon boulot), tester avec des trucs totalement théoriques et courts comme Geekbench ne donne ni des résultats fiables ni des résultats représentatifs. En fait, vu les problèmes que je montre (et on peut en trouver d’autres), ça ne sert strictement à rien.

Exemple simple avec les tests d’une machine, la mienne. Sur le navigateur de résultats, le MacBook Air 11 pouces 2012 en version Core i7 a un score « single core » qui varie de 2250 à 2976 en version 64 bits et de 574 à 2682 en version 32 bits. Pour la même machine. Sur le même test. En multi core, on passe de 4480 à 6087 et de 1201 à 5481.

Bon, mon problème c’est qu’il n’existe pas beaucoup de benchmarks pour Mac OS X et encore moins de benchs qui font des tests représentatifs de la réalité et qui permettent de vraiment comparer les machines. Mais utiliser Geekbench n’est pas pour autant une bonne idée, et accepter des résultats sans recul encore moins.

Pour un exemple précis, un Mac mini 2014 avec la configuration de base (fréquence de base basse mais fréquence maximale assez élevée) et un SSD (ou un Fusion Drive) sera bien plus efficace qu’un modèle 2012 d’occasion au même prix. Et un modèle 2014 haut de gamme avec une fréquence maximale très élevée et seulement deux coeurs sera plus efficace qu’un modèle 2012 avec quatre coeurs dans la grande majorité des usages classiques.