2012-09-12 8 views
10

Estamos estudiando el desarrollo de una aplicación de estilo Metro de Windows 8 que tendrá mucha carga de fotos, por lo que nos preocupa el rendimiento de la UI. En iOS fue una decisión fácil (Objective-C sobre HTML para obtener el rendimiento de la interfaz de usuario que necesitábamos), pero al investigar Windows 8 me resulta más difícil saber cuánto más rápido será XAML que HTML5/CSS.¿Las aplicaciones basadas en XAML de Windows 8 son notablemente más rápidas que las de HTML/CSS?

que he visto comparaciones generales entre XAML y HTML5 (como this one), y hay una SO answer que toques en el rendimiento, pero no proporciona datos para respaldar su reclamo o explicar por qué XAML es más rápido.

Según lo que he leído, HTML5/CSS se representa con el motor de renderización de IE10, lo que significa que no es super-nativo y puede ser más lento. Pero no estoy seguro de cómo se representa el XAML, o de cómo es "nativo".

¿Alguien ha hecho comparaciones de rendimiento entre las dos tecnologías, o puede proporcionar enlaces a más explicaciones sobre cómo se representa cada una (teniendo en cuenta el rendimiento)?

+0

La nueva implementación de XAML AFAIK es completamente nativa y utiliza DirectX en su mayor parte para la representación. Pero, de nuevo, creo que IE10 también usa DirectX para renderizar. – Krishna

+0

Algo a tener en cuenta es la familiaridad de los desarrolladores con cada tecnología. Con demasiada frecuencia, el rendimiento de la aplicación se degrada debido a que el ingeniero no está familiarizado con los patrones adecuados o las estructuras de datos para la plataforma. En general, los motores de IU son todos suficientemente rápidos para la mayoría de los casos de uso. Al llevar estos extremos al extremo, es probable que descubras las diferencias. – allingeek

Respuesta

12

Aquí están mis pensamientos sobre éste:

Primera XAML le puede dar un mejor rendimiento que HTML5. Si usa XAML combinado con C++, obtendrá el mejor rendimiento para WinRT, porque C++ es un código nativo. Si usa C#, depende del CLR (Common Language Runtime) que es más lento que el código nativo.
- Reference 1
- Reference 2

En segundo lugar, si se va a incluir una gran cantidad de bibliotecas de JavaScript, que es probable que, tendrá un impacto en el rendimiento. (jQuery, complementos jqQuery, backbone.js, ...)

Luego, como dijiste, el HTML5 en JS se representa utilizando el motor de IE. Entonces este es complicado. Realmente depende de cómo va a escribir su código. Para conocer las mejores prácticas tanto para XAML como para JS, puede mirar here.

De experiencia personal. Escribí una aplicación usando XAML/C#. Se siente mejor que Windows Phone 7 y 7.5. Principalmente porque recortaron .NET. El nuevo modelo async y await es bastante bueno. Puede implementar fácilmente llamadas asincrónicas, servicios web o representación de imágenes en su caso.

Pero también me interesan los números, por lo que si alguien hace una prueba, sería genial.

+0

Ese enlace de prácticas recomendadas fue muy útil, gracias, y tiene información sobre cómo funciona cada plataforma. –

+10

Solo para aclarar, el motor de renderizado XAML es puro C++/COM ya sea que esté usando C++ o C#. El código detrás en C# usa esencialmente el CLR pero el renderizado no. Hay una penalización de rendimiento para acceder a los elementos de la IU desde el código porque debe cruzar el límite CLR-COM, pero esto es mínimo. Cualquier presentación que no requiera interacción con el código (por ejemplo, animaciones) debe ejecutarse a la misma velocidad ya sea que esté en C++ o C#. Las notas restantes sobre JS son válidas, pero vale la pena señalar que WinRT hace el código JavaScript "JIT Compile" en la primera ejecución. –

+0

@ JaredBienz-MSFT, ¿FlipView (por ejemplo) usa la llamada JS en el mismo motor de renderizado C++ que FlipView en C#? ¿O el JS FlipView se implementa de manera completamente diferente y se hace usando JS/HTML como controles personalizados en JS? –

3

IE10 tiene un motor acelerado por hardware, que incluye un lienzo HTML5 GPU acelerado. Eso significa que es probable que la renderización sea igual de rápida en HTML5 que en XAML, ya que ambas formas usan la GPU para renderizar.

La lógica puede ser un poco más lenta en JS, pero a menudo no importa. Si su aplicación no tiene un cuello de botella debido a una gran cantidad de procesamiento lógico, y al igual que muchas aplicaciones está principalmente impulsada por eventos sin bucles pesados, JS es probablemente lo suficientemente rápido.

Luego, es posible que desee tener en cuenta que es mucho más fácil trasladar HTML5 a otras plataformas.

2

La velocidad no es realmente un gran problema a menos que esté haciendo algo que requiera un procesamiento intenso o que deba ejecutarse en un determinado intervalo de tiempo.

En realidad, la informática se ha vuelto tan rápida que perder tiempo en la optimización solo lleva tiempo al implementar nuevas funciones útiles. Solo optimice donde sea necesario.

Yo diría que haga su elección en función de la funcionalidad del 2, y qué tan bien conozca cada uno de ellos. Realmente, un par de milisegundos no son realmente de qué preocuparse. Yo diría que la mayoría de sus usuarios finales no compararán su aplicación, es más probable que se vean atraídos por las características y la funcionalidad.

Ya no estamos utilizando 64kb de RAM y 400mhz de CPU.

Por supuesto, esto es asumiendo que no estás haciendo algo que requiera mucho del procesador. Si lo estás, entonces estás investigando todas las tecnologías equivocadas.

Cuestiones relacionadas