Un Raspberry Pi 3 peut être deux fois plus rapide qu’un Mac

Nicolas Furno |

Il n’y a pas que les PC assemblés avec soin qui sont plus rapides que les Mac, un simple RaspBerry Pi 3 vendu à peine 50 € peut terminer une tâche deux fois plus vite qu’un Mac portable ! Bon, autant le dire d’emblée, ce n’est pas systématiquement le cas. C’est même encore un euphémisme, puisque ce n’est le cas que dans un seul cas très précis, mais la comparaison mise en avant sur le blog des créateurs du mini-ordinateur reste impressionnante.

Raspberry Pi 3
Raspberry Pi 3

Le RaspBerry Pi 3 est un ordinateur destiné aux bricoleurs, mais aussi à l’éducation. Et l’un des objectifs de cette version est d’être parfaitement optimisée pour Scratch, un langage dynamique imaginé par le MIT pour apprendre le développement aux enfants. On peut l’utiliser pour créer des petits jeux et programmes dès l’âge de huit ans.

Et comme ces deux vidéos le prouvent, le RaspBerry Pi 3 fait deux fois mieux qu’un MacBook Pro doté d’un Core i5 et sorti en 2011. Certes, cela prouve surtout que Scratch est bien mieux optimisé sur le mini-ordinateur que sur l’appareil d’Apple, ce qui n’est pas rien. En théorie, le processeur du portable devrait écraser littéralement celui du Pi 3, mais avec suffisamment de travail, on peut inverser les rôles.

Et même si ce n’est pas utile à la majorité dans le cas de Scratch, un même effort d’optimisation avait été mené par le passé pour le media-center Kodi, et pour le navigateur web de Gnome, Epiphany. Dans les deux cas, ce travail a permis d’optimiser suffisamment ces logiciels assez lourds pour les faire tourner correctement sur les RaspBerry Pi.

Et puisque l’on évoque ces petits ordinateurs pas chers, la fondation Raspberry a conçu un nouvel accessoire pour accompagner les Pi : une caméra. Ou plutôt, un nouveau modèle qui vient remplacer l’ancienne sortie en 2013. Capteur Sony de 8 mégapixels et toujours 25 $, de quoi enrichir encore son installation avec de l’image.

[MàJ 27/04/2016 10h17] : comme certains lecteurs plus attentifs que l'auteur l'ont noté, il s'agit d'un MacBook Pro, puisque les bordures autour de l'écran sont noires.

avatar DouceProp | 

C'est la fête des Mac aujourd'hui...
J'aimerais bien qu'il soit possible d'installer Mac OSX sur la framboise... Et que ça tourne tranquillement, pour des trucs d'iTunes...

avatar occam | 

L'usine à gaz d'iTunes sur Raspberry Pi, quelle vision d'horreur…!

Par contre, on peut très bien le bidouiller comme streamer. Il existe des tas de recettes.
Voici un compte-rendu tout frais d'un amateur averti. Il a utilisé un autre mainboard low-cost, Odroid-C2, mais le soft clé, le player Volumio, marche aussi sur Raspberry. Des images pour le flasher directement sont disponibles en ligne.

http://archimago.blogspot.ch/2016/04/set-up-low-power-linux-audio-player.html

avatar fousfous | 

Comme quoi avec de l'optimisation on peut faire des miracles, y a qu'à voir Metal qui permet de multiplier par 10 les performances!
Mais le problème de l'optimisation c'est que ça demande du travail.

avatar C1rc3@0rc | 

ça demande du travail, du temps, de la disponibilité et des competences

Un des gros probleme dans le monde du PC ce sont les mensonges d'Intel qui pour vendre ses processeurs a deployé un marketing intensif qui a fait croire que les mecanismes du processeur dispensaient le programmeur d'optimiser son code.

Dans les faits, optimiser un x86 est une vraie horreur car il est quasi impossible de savoir comment le code va etre executé: un x86 c'est plus une machine virtuelle qu'autre chose!

Et puis en commercial, il y a les contraintes de temps, le manque de personnel competent, les objectifs dictés par le marketing et plus par l'ingenierie,... de fait l'industrie informatique s'est calée derriere le modele de Microsoft: on produit de la beta a peine fonctionnel, avec un code le abstrait possible et on patche a tour de bras des que les utilisateurs se plaignent trop.

Dans le monde du RISC (ARM donc), les ingenieurs ont encore la culture de l'optisation et du soft qui ne peut pas etre patché facilement (parce que ARM c'est de l'embarqué a la base et du serveur).

Le Raspberry a cet avantage d'avoir des passionnés competents qui travaillent dessus et sa faible puissance initiale oblige a optimiser. Et puis c'est du RISC, et l'optimisation elle se fait de la conception a la compilation!

Il n'empeche que c'est une grosse claque et pour Apple et pour Intel.

avatar xCow | 

Intel n'est pas responsable de la non optimisation des logiciels, faut pas tout mélanger...

avatar byte_order | 

Intel n'a jamais prétendu que optimiser son code ne servait à rien, leur proc le faisant tout seul.
D'ailleurs ils vendent tout une suite d'outils dédiés à la recherche des goulots d'étranglements, au cache miss, aux délais IO, etc.

Par contre Intel bosse depuis des années pour que leurs processeurs ajustent *dynamiquement* le pipeline d'exécution (et désormais l'horloge et l'alimentation) pour tenter de booster l'exécution du code.

Ce n'est pas pour autant qu'ils clament que l'optimisation en amont ne sert à rien.
Mais ce n'est pas pour autant que l'optimisation dynamique coté hardware n'a pas un intérêt et qu'Intel ne devrait pas en faire un argument marketing...

L'optimisation, c'est du temps, et le temps c'est ce qui coûte le plus cher de nos jours.
C'est pas la peine d'aller chercher beaucoup plus loin pourquoi l'optimisation n'est pas souvent sérieuse car, dans bon nombre de cas de tous les jours, il est très difficile de justifier le surcoût auprès de ceux qui payent, en particulier pour des développements souvent juger comme éphémères, jetables, ou les prérequis seront tout simplement augmentés, ou les lenteurs seront l'objet d'une correction future (voir une mise à jour) voir un argument marketing de la future version (70% plus rapide...).

On voit donc de l'optimisation que dans 3 grands domaines :
- là où de tout façon même avec optimisation c'est toujours trop lent alors sans optimisation c'est même pas envisageable : calcul scientifique, rendu 3D, etc...

- là où c'est rentable de le faire dès le départ, en gros là où y'a pas vraiment le choix, en gros là ou le matériel est plus limité que la moyenne et ou l'on tente de lui faire faire plus qu'a l'accoutumée. Le monde embarqué, le jeu vidéo innovant, les équipements mobiles...

- là où le temps ne coûte pas de l'argent mais du temps libre : dans les communautés de hobbyistes, de fanas, de puristes, des passionnés, etc. Dont Rasberry Pi.

avatar BeePotato | 

@ byte_order : Très bonne présentation du problème de l’optimisation.

avatar byte_order | 

Par ailleurs, réduire les CPU x86 à du CISC c'est complètement mettre de côté leur architecture type superscalaire en laissant croire que la complexité plus grande du jeu d'instruction les rends fatalement plus lent à les exécuter.

avatar C1rc3@0rc | 

@byte_order
Tu defends le x86 pour contester mon analyse, mais ce que tu avances c'est exactement ce que je dis, minoré de la responsabilité d'Intel.

Le fait est qu'un x86 est une marchine virtuelle, et qu'il est impossible de savoir comment sera executé le code, deja parce qu'il s'agit d'un secret industriel.

Ici on a un exemple très marquant qui casse ton argument: Scratch est optimisé sur processeur ARM, pas sur processeur x86, pourtant dans les deux cas l'interet, les contraintes de temps, d'argent, etc sont les memes. Sauf que d'un coté on a un materiel libre, opensource dont le programmeur a accés et peu maitriser tout de A a Z dans l'autres, il y a une boite noire insondable (le x86)...

avatar BeePotato | 

@ C1rc3@0rc : « Ici on a un exemple très marquant qui casse ton argument: Scratch est optimisé sur processeur ARM, pas sur processeur x86, pourtant dans les deux cas l'interet, les contraintes de temps, d'argent, etc sont les memes. Sauf que d'un coté on a un materiel libre, opensource dont le programmeur a accés et peu maitriser tout de A a Z dans l'autres, il y a une boite noire insondable (le x86)... »

Ce serait joli si c’était ça. Sauf que ce n’est pas le cas (cf. une de mes réponses à byte_order un peu plus tôt). :-)

avatar xCow | 

Le miracle c'est plutôt de faire moins bien avec un meilleur matos ;-)
Le travail fait sur Raspberry, c'est la normalité.

avatar byte_order | 

Toutafé.
Mais, contrairement à l'optimisation, faire un programme lent, c'est très facile ;-)

Là, ce qui semble clair, c'est que le portage de Scratch sur Mac OS X a un gros goulot d'étranglement quelque part...

avatar BeePotato | 

@ byte_order : « Là, ce qui semble clair, c'est que le portage de Scratch sur Mac OS X a un gros goulot d'étranglement quelque part... »

En fait, il semble que ce n’est même pas ça (si j’ai bien compris ce que j’ai lu en diagonale en sautant de lien en lien) : il s’agit d’une évolution de la version 1.4 de Scratch, qui était implémentée en Squeak, tournant donc sur une machine virtuelle pour Squeak (ça a changé avec Scratch 2, qui repose sur Flash).
Le boulot qui a été fait a consisté à adapter le code pour le rendre compatible avec une machine virtuelle Squeak plus récente et bien plus rapide (Scratch 1.4, n’étant plus tout neuf, tournait sur une VM assez ancienne). Ça, plus du travail sur le code lui-même pour l’améliorer par endroits.
Le résultat est un Scratch bien plus rapide.

Mais en fait, il est plus rapide sur toutes les plateformes (tout comme la version précédente se traînait sur toutes les plateformes, et pas juste en version Mac). Il ne semble pas y avoir d’optimisation particulière pour le Pi. S’ils faisaient tourner le même programme avec NuScratch sur le Mac au lieu d’utiliser l’ancienne version de Scratch, le Pi serait très probablement largué.

Bref, c’est un joli travail de modernisation de Scratch 1.4 pour lui donner une vitesse d’exécution compatible avec un Raspberry Pi, mais le comparatif en vidéo n’est là que pour montrer que le but a été atteint, et non pour faire la démo d’une super optimisation spécifique au Pi.

avatar byte_order | 

Ah, merci, donc c'est surtout NuScratch qui a fait un bond en performance par rapport a Scratch 1.4.
J'avoue j'ai pas été voir dans le détail en quoi consistait NuScratch.
Merci de l'avoir fait.

avatar BeePotato | 

@ byte_order : « Ah, merci, donc c'est surtout NuScratch qui a fait un bon en performance par rapport a Scratch 1.4. »

Ouais, c’est vrai qu’on peut résumer ça comme ça, plutôt que d’écrire une tartine comme j’ai fait. :-)

« Merci de l'avoir fait. »

Ma curiosité a vaincu ma flemme. ;-)

avatar marc_os | 

@ fousfous
Oui, ça demande du travail.
Donc ils n'ont optimisé que du côté Pi 3.
En plus ils sont juges et parti.
Pas étonnant dans ces conditions qu'ils arrivent à trouver un cas où leur machin est plus rapide qu'un MBP (ou n'importe quoi d'autre).

avatar lohez | 

C'est un MacBook Pro avec les bords noir !

avatar Corentin.R | 

Je viens de déballer le miens :D

avatar kermith72 | 

Oui, oui et la marmotte... Arrêtons de comparer ce qui n'est pas comparable. Faites une compilation d'une application avec un raspberry... et aller prendre un café :-) Même si le Pi 3 est beaucoup plus rapide, il me fallait une demi-heure à une heure pour compiler Centreon sur un Pi version B :-), il faut encore une dizaine de minutes voir plus avec le Pi 3.
Le Pi 3 a fait des progrès, c'est certain, mais il est limité par son système de stockage et son bus couplé à l'USB et la carte réseau. C'est une bonne machine pour l'éducation, certaine application embarquée mais arrêtons les comparaisons. Il ne sera jamais capable d'embarquer et faire fonctionner mes dizaines de VM stockés sur mon Macbook et je ne vous parle pas de mes montages vidéos pour mes formations !
Sur ce, je recommande le Pi 3 pour s'éclater en électronique :-)

avatar heret | 

Pas besoin de compiler quoique ce soit. Faire une mise à jour de raspbian est suffisante pour se rendre compte où se trouvent les lacunes.

avatar occam | 
avatar minipapy | 

La première chose qu'on apprend aux développeurs, c'est que toute la puissance du monde ne vaut rien si les algorithmes des programmes utilisés sont médiocres... Une calculatrice peut s'avérer plus efficiente qu'un Mac Pro dernier cri (même si c'est caricatural dans ce cas de figure).

avatar heret | 

Hé papy, c'était vrai à ton époque comme à la mienne. Maintenant, les djeunz qui sortent de l'école avec un diplôme d'informatique n'ont jamais fait de TP d'assembleur. En d'autres termes, ils ne savent pas comment ça marche.

avatar BeePotato | 

@ heurte : « Maintenant, les djeunz qui sortent de l'école avec un diplôme d'informatique n'ont jamais fait de TP d'assembleur. En d'autres termes, ils ne savent pas comment ça marche. »

Minipapy parlait de la qualité des algorithmes — ce qui n’a vraiment rien à voir avec le fait de savoir développer en assembleur. Dijkstra ne faisait pas d’assembleur.
On ne t’a pas appris ça, à ton époque (quelle qu’elle ait été), ou c’est l’âge qui fait que tu as déjà tout oublié ? ;-)

Bon, cela dit, si à défaut d’assembleur, les petits jeunes pouvaient au moins faire du C (et pas juste une heure ou deux en passant), ce serait bien. :-)

avatar mulet_from_space | 

@BeePotato,

à propos, une version optimisée de l'algo de Dijkstra:

https://fr.wikipedia.org/wiki/Algorithme_A*

avatar BeePotato | 

@ mulet_from_space : Ce n’est pas vraiment en ces termes que j’aurais présenté le A*. :-)

avatar mulet_from_space | 

@BeePotato, c'est vrai, d'ailleurs tu ne l'as pas présenté du tout . :-)

Peut être ignorais-tu aussi son existence?, cela expliquerait que tu prennes comme "référence d'optimisation" un algo datant de 1959? . :-)

avatar BeePotato | 

@ mulet_from_space : « c'est vrai, d'ailleurs tu ne l'as pas présenté du tout . :-) »

D’où, sans aucun doute, l’usage du conditionnel dans ma phrase. ;-)

« Peut être ignorais-tu aussi son existence? »

Si, si, rassure-toi, ça fait un petit moment que je connais ça.

« cela expliquerait que tu prennes comme "référence d'optimisation" un algo datant de 1959? . :-) »

Mais de quoi parles-tu ?
C’est toi qui as cité un algorithme. Moi, je n’en ai cité aucun (ni parlé de « référence d’optimisation »). J’ai cité le nom d’une personne.

Une personne qui a laissé son nom dans l’histoire de l’informatique pour bien plus qu’un algorithme. Quelqu’un qui est notamment connu pour s’être intéressé à l’informatique, bien plus qu’aux ordinateurs.
Ce qui me permettait d’illustrer le décalage entre ce que disait heret et ce dont avait parlé minipapy (à savoir que sans maîtrise de l’algorithmique, les détails d’implémentation ne changeront pas grand chose).

Mais peut-être ignorais-tu qui était derrière le nom de cet algorithme auquel tu a cru, de façon erronée, que je faisais référence ? ;-P

(Au fait, puisque tu t’intéresses à l’âge des algos : le A-star, ce n’est pas tout neuf non plus, hein (1968).)

avatar C1rc3@0rc | 

@BeePotato

L'algorithme est indépendant du langage, et heureusement. Si je dois choisir mon algorithme en fonction du langage, c'est que probablement le langage est mauvais ou inadapté au problème...

Par contre l'algorithme est dépendant de l'architecture, de sa compréhension et de sa maitrise.

Si j'ai accès a une machine séquentielle, et que je dois faire un calcul matriciel je vais choisir un algorithme qui optimise les boucles.
Si j'ai accès a une machine parallèle je vais choisir un algorithme qui optimise le parallélisme et je vais pas me lancer dans des optimisation de boucles, qui pourront être contre productives en plus.

Si j'ignore comment l'architecture va fonctionner, je vais rester sur un niveau abstrait en choisissant les algorithmes les plus proches des fonctions mathématiques en espérant que les niveaux inférieurs d'exécution seront eux bien codés et seront assez malins pour comprendre le systeme mathématique.

Et la ce que je vais optimiser c'est la logique mathématique. Et je vais passer beaucoup de temps a mettre en place des algo de validation des résultats, parce que je ne peux pas avoir confiance dans l'exécution, par définition...

L'accès a l'assembleur (ou a un assembleur portable comme le C) n'a d'intérêt que dans 3 cas:
- la machine n'a que très peu de mémoire et est très prévisible
- mon programme est un compilateur.
- mon programme est une machine virtuelle (c'est donc un compilateur inefficace)

avatar minipapy | 

C'est toujours vrai. :-)
Même si mon pseudo peut être trompeur, je suis un "djeunz" et j'ai eu des cours magistraux, des TDs et des TPs d'Assembleur et d'architecture pendant un an. J'ai aussi mangé du C pendant deux ans. Et j'ai refait de l'assembleur en cours de compilation avant d'être diplômé.

Donc rassure toi, la nouvelle génération n'est pas plus ignorante que la précédente et on est prêts à prendre la rélève ! ;)

Par contre, je parlais dans mon commentaire essentiellement de complexité algorithmique et là, pas besoin d'avoir fait d'assembleur pour comprendre le pourquoi du comment. :)

avatar heret | 

un simple RaspBerry Pi 3 vendu à peine 50 € peut terminer une tâche deux fois plus vite qu’un Mac portable

Oui, et ? Ce n'est pas un exploit. L'exploit c'est de réussir à trouver des acheteurs pour des bécanes aux spécifications aux indigentes et au prix aussi fort qu'un Macintosh actuel.

avatar marenostrum | 

ce que tu dis, c'est l'exploit d'un marchand. Apple est un simple marchand. un geek c'est autre chose. son exploit n'est pas de vendre, ni de gagner d'argent.

d'ailleurs pour ça qu'on peut pas comparer (pareil l'autre comparaison entre l'iMac 5K et le tour PC) . mais bon l'article vise les clics. il va pas plus loin que ça.

avatar anonx | 

Mon Dieu que c'est à mourir de rire de lire ceux qui prennent ça mais pire que du sérieux ^^

avatar Mehdib92 | 

Le seul truc chiant avec le Pi 3 c'est l'absence de puce pour décoder le h265...

avatar mulet_from_space | 

Franchement, arriver à faire tourner un "pac man" à 46 fps max (seulement!) que ça soit sur un RaspBerry Pi 3, un MacBook I5, ou autre chose de récent...je vois pas vraiment comment on peut parler d'un exploit d'optimisation dans ce contexte.

Même si on peut nuancer un peu, en considérant que ce PacMan est le résultat d'une "compilation dynamique et temps réel" d'un langage haut niveau inventé par le MIT.

avatar macinoe | 

Exactement.

Pacman tournait parfaitement sur mon acorn electron.
Le processeur MOS 6502 qui l'équipait était au bas mot 100 000 fois plus lent qu'un ARM d'aujourd'hui.

Le problème d'optimisation le plus marquant et de loin est là.

avatar RBC | 

Ha ha ha !!!
Mr Heret s'est fait sévèrement casser par Mr Minipapy qui est un gentil Djeunz. Comme quoi il ne faut pas faire des conclusions hâtives.
Le pire c'est que pour une fois que Mister Heret ne nous avait pas ressortis sont sempiternel même commentaire avec les rouleaux de printemps du Pizzaïolo qu'il a posté des centaines de fois je crains qu'a l'avenir il recommence, domage !!!

avatar BigMonster | 

En tout cas, ça semble vachement intéressant. On peut l'avoir en rose, ce Pi 3 ?

avatar marc_os | 

@ BigMonster
Et en or rose aussi ?

CONNEXION UTILISATEUR