Sur le serveur, Swift est nettement plus rapide que Node.js

Nicolas Furno |

Swift, le nouveau langage de programmation d’Apple, n’est pas limité aux produits du constructeur. Conçu comme un langage à tout faire, depuis le noyau d’un système d’exploitation jusqu’aux scripts des utilisateurs, il peut aussi servir sur les serveurs. Apple fournit une version prête à emploi pour Ubuntu qui sert justement à exploiter le langage sur un serveur, où Linux domine largement.

Pour utiliser Swift sur un serveur, il faut tout développer soi-même toutefois, ce n’est pas un langage prêt à l’emploi comme peut l’être PHP. Néanmoins, plusieurs frameworks proposent tout le nécessaire pour créer des applications en Swift dédiées à un serveur, sans avoir à gérer soi-même les connexions entrantes et sortantes et tout le reste. Mais que valent-ils sur le plan des performances, et par extension, comment se positionne Swift sur le serveur en termes de vitesse ?

Pour le savoir, Ryan Collins a comparé ces frameworks à un poids lourd côté serveur, à savoir Node.js qui permet d’utiliser du JavaScript sur un serveur. Cet environnement est devenu extrêmement populaire et de nombreuses entreprises l’utilisent pour leurs services, de Netflix à Uber, en passant par eBay et des centaines d’autres. C’est un outil très populaire, mais qui n’a jamais été très rapide et la comparaison avec Swift est impitoyable : node.js est souvent bon dernier.

Ce graphique mesure les performances d’un moteur de blog codé en utilisant trois frameworks Swift et node.js. Plus le nombre de requêtes est élevé, meilleures sont les performances.
Ce graphique mesure les performances d’un moteur de blog codé en utilisant trois frameworks Swift et Node.js. Plus le nombre de requêtes est élevé, meilleures sont les performances.

Les mesures ont été effectuées sur un Mac mini de 2012, où Ubuntu a été installé nativement (sans virtualisation). Deux applications minimales ont été créées, un blog et une autre qui génère un fichier JSON, pour simuler au mieux un usage réel de ces langages de programmation sur les serveurs. À l’exception de l’un des frameworks Swift qui avait un bug connu avec le JSON, Node.js a toujours terminé dernier sur les benchs qui mesuraient à la fois le nombre maximum de requêtes gérées correctement par seconde et le temps de réponse.

Naturellement, le choix d’un langage n’est pas lié uniquement aux performances. Dans le cas de Swift, l’intérêt pour les développeurs iOS et macOS est d’utiliser le même langage et pourquoi pas même les mêmes lignes de code pour leurs apps et pour le module serveur associé. C’est la même logique pour Node.js : les développeurs de sites web utilisaient déjà du JavaScript, ils pouvaient garder les mêmes compétences sur le serveur.

Si vous voulez commencer à utiliser Swift sur les serveurs, Perfect est un bon point de départ. Il est le plus rapide sur toutes les mesures effectuées par Ryan Collins et il semble plus avancé et complet que ses concurrents.

npm souffre aussi de lenteurs

Au sujet de Node.js, la plupart des développeurs utilisent un gestionnaire de paquets pour leurs projets et en général, ils exploitent npm. Le problème de cette solution, c’est qu’elle souffre, elle aussi, de lenteurs, surtout sur les plus gros projets.

Confronté au problème, Facebook — qui est sans doute l’un des plus gros utilisateurs de JavaScript — a mis au point sa propre solution. Yarn, c’est son nom, est nettement plus rapide que npm, il est aussi plus sécurisé et fiable. Et c’est un projet libre et gratuit que tout le monde peut utiliser.

Autre avantage de Yarn : sa mascotte est un chat tout mignon.
Autre avantage de Yarn : sa mascotte est un chat tout mignon.

Pour sa part, Swift intègre son propre gestionnaire de paquets.

avatar tekikou | 
avatar C1rc3@0rc | 

Deja la comparaison exclue Java qui reste le poids lourd du secteur.
Ensuite il n'y a effectivement pas que la vitesse d'excecution mais aussi l'adaptation a la tache (le modele de programmation par exemple) et surtout il y a la masse et la dimension de l'usage.

NodeJS n'est certainement pas le plus performant ni le plus representé, mais son modele evenementiel et le fait que ce soit du Javascript, tres utilisé en programmation WEB, lui offre un avantage majeur.

De fait Swift se positionne plus contre Java, que contre Javascript (NodeJS).

Apres en terme de performance, c'est le meme modele pour tous: machine virtuelle!
Une fois la conversion en bytecode faite, c'est a ce niveau que ce fait l'optimisation, et la c'est la bataille des VM et des compilateur JIT.

Mais une chose est certaine, c'est que Swift a un developpement tres rapide et qu'il arrive a tous les niveaux (ou presque) ou la programmation est necessaire. Et c'est un vrai langage, avec une vraie puissance. Par contre il est encore trop instable en terme de normalisation pour s'affirmer face a Java, C++ et Python.
Mais la politique d'Apple semble tenir la route et il est probable qu'a terme Swift va prendre la place de beaucoup d'autres langages et framework. Si on pouvait avoir Swift a la place de Javascript et PHP ce serait deja une tres grosse avancée pour le WEB, c'est evident.

avatar byte_order | 

Faudrait que les navigateurs supportent déjà Swift pour ça. On en est loin pour l'instant.

avatar awk | 

@byte_order :
?????

On parle de Back end, pas de Front end

avatar C1rc3@0rc | 

Théoriquement c'est pas compliqué, la machine virtuelle de Chrome peut autant faire tourner du JS que n'importe quoi d'autre.
D'ailleurs le moteur de NodeJS c'est généralement V8, et V8 est utilisé pour motoriser le projet Dart chez Google, qui peut faire tourner potentiellement n'importe quel langage et vise plus particulièrement a unifier la programmation coté serveur et coté client.
Il suffit qu'Apple de son coté supporte Swift dans Webkit, et la programmation coté client va basculer sur Swift très vite. D'ailleurs l'arrivé de l'environnement de programmation Swift sur l'iPad est un signe avant coureur assez clair.

On a aussi l'exemple avec la VM de Java qui peut faire tourner aujourd'hui du Python au Lisp. La question de fond c'est d'arriver a avoir un langage robuste et unifié qui couvre le client et le serveur. Java avait tenté d'etre cette unification, mais la lourdeur de Java et sa complication syntaxique l'on ejecté du client. Javascript, s'il a avec NodeJS un certain succes, reste Javascript avec ses lacunes et son modele si particulier difficilement compatible avec les contraintes au niveau programmation backend. Swift a la qualités nécessaires pour transformer l'essai.

avatar marc_os | 

@ C1rc3@0rc
Sous Sierra, l'application Console.app a été ré-écrite en Swift si j'ai bien compris.
(Et elle est pas mal boguée, et c'est une horreur côté dev, tout log qui n'est pas un log d'erreur partant vite dans le nirvana.)

avatar heret | 

...un moteur de blog codé en utilisant...

En 2016, plus personne ne code, sauf besoin extrêmement particulier, et c'est tant mieux.
Celui qui n'a jamais utilisé ce type de terminal http://aconit.inria.fr/omeka/archive/files/99010a4ab2fbcc715fae4a6d4e402... n'a jamais codé de sa vie et ne sait pas ce que c'est que de coder, et c'est tant mieux.

Halte à l'appauvrissement du langage et de la pensée ! Halte au vautrage dans la médiocrité !

avatar Mickaël Bazoge | 

@heret

Tu peux pas changer de disque un peu ? T'es lourd.

avatar françois bayrou | 

AAaaaah un p'tit enculage de mouche de temps en temps ça ne fait de mal à personne

avatar awk | 

@françois bayrou

La sodomie de drosophile est un noble art ne supportant absolument pas la médiocrité ;-)

Sur des usages largement partagées même par les plus hautes autorités de la science informatique depuis des décennies, ce n'est pas de la sodomie de drosophile, mais du sectarisme égotique obtus vaguement réactionnaire et rance.

Par contre l'enculage de mouche sur l'abus de langage consistant a parler des coder en lieux et place de chiffrer me semble encore avoir sa placer pour la cryptographie :-)

avatar marc_os | 

@ Mickaël Bazoge
C'était pas de l'humour ?

avatar awk | 

@marc_os :
Non c'est une vieille antienne du gars :-)

avatar occam | 

@heret :

Cool off, hombre.

“To code” en anglais courant est devenu synonyme de programmer, et vous le savez sans doute mieux que la plupart d'entre nous.

Au point que l'IEEE précise :
« For the purpose of clarity ‘source code’ is taken to mean any fully executable description of a software system. It is therefore so construed as to include machine code, very high level languages and executable graphical representations of systems. »

Tout est dit.

Que l'usage anglophone déteigne sur l'usage francophone peut être regretté, mais c'est probablement inévitable :
https://code.org
https://code.visualstudio.com/?utm_expid=101350005-28.R1T8FshdTBWEfZjY0s...

Les chances de renverser la tendance sont commensurables avec la probabilité de survie d'un mollusque gastéropode dans une supernova.

avatar awk | 

@occam

S'il emplois les vocables de quincaille et mentale en lieu et place de Hardware et Software, il peut continuer à faire le malin avec ce combat d'arrière garde reposant qui plus est dur rien de réellement fondamental même d'un point de vue théorique.

Alfred Aho, Peter Weinberger et Brian Kernighan ont tous utilisé le terme, cela suffit pour moi à le valider :-)

avatar occam | 

@awk :
Pour une fois que j'y vais mollo et que je m'essaie à la pédagogie douce...

avatar awk | 

@heret :
L'usage du vocable coder pour désigner l'acte de programmer est on ne peut plus ancien, classique et largement partagé dans la communauté même parmi ses membres les plus éminents et reconnu.

Il faut arrêter avec cette fausse rigueur

avatar ErGo_404 | 

Et pourtant le Larousse qui ne s'illustre pas par l'appauvrissement de la langue française nous dit "Appliquer un code à des données ; écrire un programme pour ordinateur.".

A ce qu'on sache, un fichier source javascript est bien un programme à destination des ordinateurs. Donc un code. Donc codé.

avatar Niarlatop | 

J'attends de voir ton moteur de blog codé en assembleur à l'œuvre ^^

avatar oomu | 

@heret

cela fait à peu près 25 ans que j'utilise cet anglicisme/barbarisme/qu'importe "coder" pour le fait d'écrire du code informatique pour mes ordinateurs, au travail et hobby.

Et tous mes collègues font de même. Il en état de même quand j'étais étudiant et je vois la même chose continuer avec les étudiants actuels et un peu partout.

Alors, peut être qu'on aurait pu sauver l'Humanité de Son Triste Et Funeste Sort si on avait évité l'usage d'un énième argot mais c'est à mon avis complètement inutile et illusoire de croire influencer qui que ce soit sur ce point.

"Coder" est clairement gravé comme un synonyme de programmer un ordinateur. Cette expression est banale, courante, vielle et utilisée du plus illustre ingénieur de l'industrie jusqu'au plus obscure webcomics en passant par une foule de hackers à casquette...

sans espoir.

Tiens, qu'en dit XKCD ? (sur les polémiques sans intérêt, toujours vérifier l'opinion de XKCD).

Avis perso : c'est une expression que j'apprécie et qui m'apparait totalement légitimée de nos jours.

-
sur ce, je retourne sshiser sur mon serveur ^^,

avatar guigus31 | 

oomu, t'es magique :)

avatar pim | 

C'est quoi ? Un orgue électronique ? Jean-Michel Jarre utilise ça ? Lol

avatar awk | 

@pim

Intéresse toi un peu à l'histoire de l'informatique tu découvrira plein de choses étonnantes ;-)

avatar codeX | 

Pas équipé pour comprendre l'ironie ?

avatar marc_os | 

@ codeX
Tu sais, l'ironie sur ce genre de forum a souvent du mal à passer.
Pourtant, le commentaire initial de heret était visiblement de l'humour tellement c'était gros.
Comme si on disait (au hasard) qu'aujourd'hui rien ne vaut les cartes perforées.
Mais non, certains préfèrent gloser sur l'usage de certain mots, répondant par là même à la définition du troll, à savoir du fouteur de merde qui détourne les gens du sujet initial.
Pour preuve, compter la proportion de commentaires ici parlant de Swift vs. Node.js... :/
En plus, les trolls les plus virulent ont double casquette, ils sont en plus donneurs de leçons ! Détestable.

avatar awk | 

@marc_os

Non le commentaire d'heret n'est pas de l'humour c'est un de ses combats ne reposant hélas sur rien de sérieux et de défendable.

Pages

CONNEXION UTILISATEUR