04 juin 2008

du javascript ... compilé ?

Les applications "web 2.0" utilisent de grandes quantités de JavaScript. Les librairies écrites dans ce langage font preuve de beaucoup d'effort pour obtenir les meilleurs résultats sans sacrifier une bonne structuration, mais les performances reposent toujours sur l'interpréteur JS du navigateur.

Si sur un PC "moderne" cela pose relativement peu de problème, c'est loin d'être le cas pour le marché du web mobile. Il est hors de question de faire ingurgiter des centaines de ko de script à un navigateur mobile en espérant des performances de haut niveau.

Or c'est le marché le plus porteur du web de demain ! Certains site orientés mobiles observent déjà une avalanche de requêtes "iPhone". Non pas qu'il y ait des millions d'utilisateurs du joujou d'Apple, mais plutôt que ceux-ci utilisent leur mobile comme station web, connectée en permanence, et donc ont un comportement très différent de l'utilisateur classique qui garde un oeil sur son forfait WAP 1h ;-)

Les développeurs de WebKit (le moteur commun des navigateurs KDE et Safari) annoncent leur projet SquirrelFish - comment peut on trouver des noms pareils ;-)
Il s'agit d'un moteur JavaScript utilisant un mode "compilé" des scripts sous forme de bytecode, ce qui permet d'excellentes performances.

Ils proposent également un benchmark qui permet de se faire sa propre opinion
http://webkit.org/perf/sunspider-0.9/sunspider-driver.html

Pour moi, ça donne sur mon PC (windows XP) :

IE7 : 46 172 ms
IE8 beta : ne s'installe pas chez moi, problème d'update invalide :-( il faut une version US ?
Firefox 2 : 34 946 ms
Firefox 3 rc1 : 5 256 ms
Safari 3 : 6 690ms
Safari + Webkit "nightly build" : 4 859ms -- soit presque 10fois mieux que IE7 !!

Bien sur, comme toujours, ce bench est probablement discutable et les résultats sur un seul PC ne sont pas représentatifs ...

OK, donc il suffit d'attendre la mise à jour du navigateur de mon mobile préféré pour lancer mon application "web 2.0" basé sur XYZ.js avec plein de plugins et qui en jette un max ?

Ce serait aller un peu vite... les ressources mémoire, bande passante et autres spécificités de l'Internet mobile sont peu considérées par les développeurs, peut être un peu trop habitués aux centaines de Mo d'un PC et au GHz de son processeur.

On trouve par exemple les recommandations de Yahoo sur le sujet. Une grande partie du temps de réponse apparent d'une application est imputable à l'ordre de chargement des fichiers qui composent la page web. En regroupant les scripts, images et les CSS, en les ordonnant et en comprenant le chargement d'une page on peu nettement améliorer sa réactivité.

Les premiers à bien mettre en pratique le web mobile occuperont le terrain ! Rien de tel qu'une application qui rame pour jeter le doute sur une technologie.