• [^] # Re: Le web comme machine virtuelle ...

    Posté par . En réponse au journal Les vieux cons et le progrès.... Évalué à 10.

    Les problèmes de performances ne sont que temporaires. Je pense que d'ici quelques années, la différence de performances entre Dalvik (la machine virtuelle d'Android) et V8 (la machine virtuelle Javascript de Google) sera négligeable pour la majorité des applications.

    Ouais, ouais, ca fait des annees qu'on l'entends celle la. Deja, pendant que le web s'evertue a estomper la diffence, le monde natif s'ameliore aussi.
    Ensuite, en 2008-9 quand chrome et safari se tiraient la bourre niveau perf js, on a eu un bon saut en avant niveau. Cool!
    Qu'est ce qui s'est passe? Tout le monde s'est engouffre dedans et a commence a mettre du js partout.
    Cool.
    En 2010, l'ipad sort. Ah ouais, mais d'un coup charger 1MB de js, ca le fait moins la, les pageload tombent a 7-10 secondes. Techcrunch etait (et est toujours, probablement) inutilisable sur un ipad1, meme sous safari mobile qui enfume de loin toute la concurrence sur tablette/telephone.
    Bon, les dev webs remettent de l'ordre, au final ca commence a passer.

    Pendant ce temps la, les applis native debarquent dans tous les sens sur iphone. Tout le monde rivalise de vitesse et reactivite dans tous les sens, ca bouillonne, des tas d'applis de partout. Beaucoup d'idees a la con, mais aussi beaucoup de tres bonnes idees. Il est ou instapaper en mode web? Instagram qui utilise la web cam que promit, ca arrive? Est ce que tu connais une seule personne qui utilise le site mobile de facebook? Pourtant dans le genre investi dans le web, ils se posent. Ou sont les vine, path, pinterest, square, evernote, que sais je encore? Et les jeux? On nous promettait que sisi, html5 va tuer flash pour les jeux, 'tin heureusement qu'on les a pas attendu.

    Le monde web en est encore a essayer de singer le look des applis natives de 2010, avec des boutons qui mettent 200ms a repondre.
    Et comme t'es sur du 3g tout pourri, t'as un ping a 300ms, et tu poireautes une seconde avant que ton ecran commence a se rafraichir (ben ouais, 80kb, a 40kB/s c'est long).
    Pendant ce temps la, l'appli en face te sort un feedback en 20ms, lance la requete, charge l'ecran suivant en 40ms et tu te prends 5kb de json qui reviennent un chtouille plus vite.
    Quand tu regardes les stats d'utilisation, tu peux te considerer content si t'as des sessions de 90 secondes. Tu parles de passer les 5 a 10 premieres secondes a regarder un ecran plan avec une barre bleue en haut, tu crois que ca marche?
    Tu veux un ordre de grandeur? Juste le temps d'initialser une UIwebView, sans rien dedans, sous ios, j'ai quasiment le temps de lancer une appli avec une UI reactif (environ 650-700 ms du main au view did appear, 500-600ms pour la web view). Rajoutes 1 a 3 secondes minimum pour commencer a afficher un truc dans le monde du web. En fonction de l'usage (juste verifier un truc rapide), l'appli native est deja dans la poche de l'utilisateur que le web attends encore de charge son putain de js.

    La complexite? Mouais. Le concept du monde mobile c'est que que les applis sont extremenet simple et focalisee sur un truc tres precis. Ca s'ecrit vite, et te laisse du temps pour peaufiner l'ui.
    Mon appli au taff pese 18000 lignes de code, tout compris, je viens de la reecrire essentiellement tout seul en 6 semaines (et en ajoutant qq features au passage). Avec ca, on supporte pres de la moitie de notre traffic.

    Last but not least, les questions de performances changent. En 2006, on pouvait se permettre d'avoir des monstres de cpu. Rien a branler, l'ordi est branche sur une prise de courant, tires 150w s'il faut, intel!
    Depuis, les perfs brutes evoluent au final assez peu. La consommation s'ameliore. Les laptop retrecissent. Apple lache le dock 30 pin parce qu'il est trop epais. L'ipad 3 sort avec 3mm d'epaisseur en plus, ca fait tout un foin. Et il chauffe, oh mon dieu. Apple sort une revision de l'ipad 2 juste parce qu'elle consome moins.
    La question n'est plus "est ce que c'est assez rapide", mais "est ce que c'est assez rapide, leger en bande passant et cool sur le cpu".
    Le monde mobile nous ramene fin 90-debut 2000 niveau contraintes. Non, c'est pas ok d'avoir de grosses images. Non, c'est pas ok de chopper 6 librairies js pour un total de 500kb de js. Le nombre de requetes sortantes moyens est tout sauf ok sur des devices qui ont une bande passante moyenne avec un ping a chier par terre.

    Maintenant, qu'on ne se meprenne pas. J'aime bien le web, ya des choses tres bien qui en sortent. Mais l'effort de development ces jours ci et pour les qq prochaines annees se passe dans le monde mobile. A l'heure actuelle, le web ne suit pas. Que ce soit en qualite de framework, en stabilite ou en perf pur.