11
votes

Les applications Windows 8 XAML sont-elles sensiblement plus rapides que les HTML / CSS?

Nous envisageons de développer une application de style métro Windows 8 qui sera très importante, nous sommes donc préoccupés par la performance de l'UI. Sur iOS, c'était une décision facile (Objective-C sur HTML d'obtenir la performance de l'interface utilisateur dont nous avions besoin), mais la recherche sur Windows 8, je me fais du mal à dire à quel point XAML sera plus rapide que HTML5 / CSS.

J'ai vu des comparaisons générales entre xaml et html5 (comme Celui-ci ), et il y a un afin de répondre à que Touche sur la performance, mais ne fournit aucune donnée pour sauvegarder sa réclamation ou expliquer pourquoi xaml est plus rapide.

De ce que j'ai lu, HTML5 / CSS est rendu à l'aide du moteur de rendu de l'IE10, ce qui signifie qu'il n'est pas super-natif et peut être plus lent. Mais je ne suis pas sûr de savoir comment le XAML est rendu, ou simplement comment "natif" c'est.

Quelqu'un a-t-il effectué des comparaisons de performance entre les deux technologies, ou pouvez-vous fournir des liens vers une explication plus poussée sur la manière dont chacune est rendue (avec la performance à l'esprit)?


2 commentaires

La nouvelle implémentation de XAML AFAIK est toutes originales et utilise DirectX pour la plupart pour le rendu. Mais encore une fois, je pense que IE10 utilise DirectX pour le rendu.


Quelque chose à garder à l'esprit est la familiarité des développeurs avec chaque technologie. Trop souvent, les performances des applications sont dégradées car l'ingénieur n'est pas familiarisé avec les modèles appropriés ou les structures de données pour la plate-forme. Les moteurs d'assurance-chômage généraux sont tous suffisamment rapides pour la majorité des cas d'utilisation. En les poussant à extrêmes, vous êtes susceptible de découvrir les différences.


3 Réponses :


12
votes

Voici mes pensées sur celui-ci:

Premier XAML peut vous donner une meilleure performance que HTML5. Si vous utilisez XAML combiné avec C ++, vous obtiendrez la meilleure performance pour WinRT, car C ++ est un code natif. Si vous utilisez C # au lieu de cela, vous dépendez du CLR (runtime de langue courante) qui est plus lente que le code natif.
- Référence 1
- Référence 2

Deuxièmement, si vous allez inclure beaucoup de bibliothèques JavaScript, que vous le ferez probablement, cela aura un impact sur la performance. (jQuery, plugins jqquery, squelette.js, ...)

Puis, comme vous l'avez dit, le HTML5 in JS est rendu en utilisant le moteur de IE. Donc, c'est un problème délicat. Cela dépend vraiment de la façon dont vous allez écrire votre code. Pour les meilleures pratiques pour XAML et JS, vous pouvez rechercher ici .

de l'expérience personnelle. J'ai écrit une application à l'aide de xaml / c #. Il se sent mieux que Windows Phone 7 et 7.5. Principalement parce qu'ils ont coupé .NET. Le nouveau async et attendre le modèle est plutôt bon à. Vous pouvez facilement implémenter des appels asynchrones, un rendu de WebService ou de l'image dans votre cas.

Mais je suis aussi intéressé par les chiffres, donc si quelqu'un a effectué un test, ce serait génial.


3 commentaires

Le lien Meilleur pratiques a été très utile, merci et contient des informations sur la façon dont chaque plate-forme fonctionne.


Juste pour clarifier, le moteur de rendu XAML est pur c ++ / com si vous utilisez C ++ ou C #. Le code derrière en C # utilise essentiellement le CLR mais le rendu ne le fait pas. Il existe une pénalité de performance pour accéder aux éléments d'interface utilisateur du code, car vous devez traverser la limite CLR-COM, mais cela est minime. Toute présentation qui ne nécessite pas d'interaction avec le code (par exemple, des animations) doit fonctionner à la même vitesse, que vous soyez dans C ++ ou C #. Les notes restantes sur JS sont valides, mais il convient de noter que WinRT fait "JIT compile" JavaScript Code sur la première exécution.


@ Jaredbienz-MSFT, fait une flipview (par exemple) à l'aide de JS appel dans le même moteur de rendu C ++ en tant que Flipview en C #? Ou la JS Flipview est-elle mise en œuvre entièrement différemment et effectuée en utilisant JS / HTML comme des contrôles personnalisés serait dans JS?



4
votes

IE10 a un moteur accéléré matériel, y compris une toile HTML5 accélérée GPU. Cela signifie que le rendu est susceptible d'être aussi rapide dans HTML5 que dans XAML, car les deux manières utilisent le GPU pour rendre.

La logique peut être plusieurs fois plus lente dans JS, mais elle n'a souvent pas d'importance. Si votre application n'est pas goublée par une forte quantité de traitement de la logique, et comme beaucoup d'applications est tout simplement principalement entraînée avec des boucles lourdes, JS est probablement assez rapide.

Ensuite, vous voudrez peut-être prendre en compte, il est beaucoup plus facile de porter le port HTML5 sur d'autres plates-formes.


0 commentaires

2
votes

La vitesse n'est pas vraiment une grosse émission que si vous en faites qui nécessite un traitement intense, ou doit être exécuté dans une certaine fenêtre de temps.

En réalité, l'informatique est devenu si rapide de passer du temps sur l'optimisation consiste à prendre du temps à la mise en œuvre de nouvelles fonctionnalités utiles. Optimiser uniquement où besoin d'être.

Je dirais faire votre choix en fonction de la fonctionnalité du 2 et de la façon dont vous savez chacun d'eux. Vraiment quelques millisecondes ne sont pas vraiment beaucoup à craindre. Je dirais que la plupart de vos utilisateurs finaux ne vont pas comparer votre application, ils sont plus susceptibles d'être dessinés par des fonctionnalités et des fonctionnalités.

Nous ne courrons plus sur 64 Ko de RAM et des processeurs de 400 MHz.

Bien sûr, cela suppose que vous ne faites pas quelque chose de processeur intensif. Si vous êtes, alors vous regardez dans les mauvaises technologies ensemble.


0 commentaires