web-dev-qa-db-fra.com

Etat des performances SVG sur iOS et autres comprimés?

Après avoir décidé d'aller avec d3.js et SVG pour les visualisations, il semble que SVG fonctionnera bien dans un navigateur de bureau ou une coquille natale, mais je suis vraiment perplexe par la chute de la vitesse de performance sur la plate-forme mobile iOS.

Selon les tests suivants, il ressemble maintenant à la performance SVG s'améliore et non aussi loin derrière les vitesses de toile, c'est la bonne nouvelle:

La mauvaise nouvelle est que si vous exécutez ces tests dans le navigateur Safari sur le nouvel iPad, les vitesses ont chuté beaucoup pour SVG et Toile. La terrible nouvelle est que si vous exécutez ces tests dans le nouveau Chrome pour l'iPad, les vitesses tombent beaucoup plus.

J'ai lu que Google est obligé d'utiliser l'UIWebView qui n'est pas accéléré par le moteur Nitro JavaScript d'Apple. J'ai aussi lu que Apple repousse HTML5 mais les démos fonctionnent uniquement dans leur propre navigateur de safari.

Quel est le problème ici quand même? La meilleure cible pour mon application est mobile mais même avec les grandes API comme D3.J et les normes HTML5 telles que les performances SVG sont en cours de pincement, est-ce juste parce que Apple souhaite retenir leur propre agenda C'est comme ça que ça me tourne de toute façon. Je ne suis pas sûr de ce que ces tests ressemblent à Android? Ce serait bien de savoir. Si les tests seraient positifs, je vais peut-être vous débarrasser de l'iPad et je vais juste aller avec Android déjà.

L'essentiel est que je ne suis tout simplement pas sûr s'il est possible de créer mon application à l'aide de la technologie HTML5 en raison de ces problèmes de vitesse? Je n'ai pas non plus d'intérêt à l'apprentissage de l'objectif-c comme l'avenir va à HTML5. Je crois au Web et à ses normes, mais on dirait qu'ils sont bloqués. Je suis très intéressé à connaître des solutions à ce dilemme.

38
user962052

iOS7 a notamment de mauvaises performances animant SVG avec JavaScript - bien que le dessin statique SVG soit massivement plus rapide. Nous avons écrit A Blog sur les performances de la version iOS7 , que vous pouvez voir pour plus de détails sur Gory.

MISE À JOUR: IOS7.1 Correction du problème de performance d'animation JavaScript. C'est de retour à 50 fps

7
Michael Mullany

J'ai trouvé des fichiers d3.js/svg sur mon premier génération iPad massivement plus lentement que l'exécution de la même application sur les navigateurs de bureau (FF/Chrome/Ie 9+).

J'ai écrit les différentes améliorations que j'ai tentées ici: http://hivemindmap.blogspot.co.uk/2013/01/html5-and-interactive-graphs.html

3
MarkH

Les performances seront généralement plus bas sur des appareils mobiles que sur le kit de bureau. En général, leur matériel est moins puissant (il est davantage orienté vers une faible consommation d'énergie que la vitesse pivotante) et ils ont un enfer de beaucoup moins RAM et stockage à jouer avec. Chrome sur mon bureau a plusieurs processeurs, 8 Go RAM et un processeur GPU ridiculement puissant à sa disposition. Sur mon iPad, il n'a plus de ce niveau de pouvoir.

Les applications iOS 3ème partie (y compris Chrome) ne peuvent pas utiliser nitro, cela est correct. Je pense que c'est parce que le nitro est capable de marquer la mémoire comme exécutable et (pour des raisons de sécurité) les demandes de 3ème partie ne sont pas confiées à faire cela. La plupart des trucs HTML5 fonctionneront dans n'importe quel navigateur sur iOS (avec l'exception possible de Opera Mini). La toile et l'animation SVG seront plus lentes que dans Safari, car c'est tout ce qui est conduit par JavaScript - à nouveau le manque de L'accès à Nitro les retient. Ce n'est plus vrai: à partir des applications tiers iOS 8 peut désormais utiliser le cadre WKWebView a accès au même haut élevé Speed ​​JavaScript Moteur comme safari.

Le code natif sera généralement plus rapide car il est beaucoup plus proche du matériel, frappant les API d'affichage directement, plutôt que de traverser la pile Web.

La solution consiste généralement à tout simplifier tout. De la même manière que les développeurs de jeux indigènes ont dû réduire massivement la complexité de leurs jeux 3D afin de leur faire travailler sur des appareils iOS, les développeurs Web doivent donc réduire la complexité de leurs applications SVGS et Toile. Moins de choses volant autour de la page signifie une performance supérieure, en général.

Il y a un certain nombre de tours que vous pouvez faire et beaucoup de lecture autour du sujet. Avoir une lecture de http://www.html5rocks.com/fr/Tutorials/canvas/performance/ , http://www.html5gamedevs.com/tag/performance/ =, et le reste de Google. Personnellement, je construirais une preuve de concept et de le tester avant d'abandonner complètement l'idée :)

0
Olly Hodgson