2012-09-12 6 views
10

Wir planen die Entwicklung einer App im Windows 8-Metro-Stil, die sehr Foto-schwer sein wird, daher sind wir besorgt über die Leistung der Benutzeroberfläche. Auf iOS war es eine einfache Entscheidung (Objective-C über HTML, um die UI-Leistung zu erhalten, die wir brauchten), aber bei der Recherche nach Windows 8 fällt es mir schwerer zu sagen, wie viel schneller XAML sein wird als HTML5/CSS.Sind Windows 8 XAML-basierte Anwendungen merklich schneller als HTML/CSS-Anwendungen?

Ich habe allgemeine Vergleiche zwischen XAML und HTML5 (wie this one) zu sehen, und es gibt eine SO answer dass berührt auf Leistung, sondern bietet keine Daten seinen Anspruch zu sichern oder zu erklären, warum XAML schneller ist.

Von was ich gelesen habe, HTML5/CSS wird gerendert mit IE10 Rendering-Engine, was bedeutet, dass es nicht super-nativ ist und möglicherweise langsamer. Aber ich bin mir nicht sicher, wie das XAML gerendert wird oder wie "nativ" es ist.

Hat jemand Leistungsvergleiche zwischen den beiden Technologien durchgeführt, oder können Sie Links zu weiteren Erklärungen dazu bereitstellen, wie jede davon dargestellt wird (unter Berücksichtigung der Leistung)?

+0

Die neue XAML-Implementierung AFAIK ist vollständig nativ und verwendet DirectX größtenteils zum Rendern. Aber ich denke, IE10 verwendet DirectX auch zum Rendern. – Krishna

+0

Etwas, das man beachten sollte, ist die Vertrautheit der Entwickler mit jeder Technologie. Zu oft wird die Anwendungsleistung beeinträchtigt, da der Ingenieur mit den richtigen Mustern oder Datenstrukturen für die Plattform nicht vertraut ist. Im Allgemeinen sind UI-Engines für die meisten Anwendungsfälle ausreichend schnell. Wenn Sie diese auf die Spitze treiben, werden Sie wahrscheinlich die Unterschiede entdecken. – allingeek

Antwort

12

Hier sind meine Gedanken über diese:

Erste XAML können Sie eine bessere Leistung als HTML5 geben. Wenn Sie XAML in Kombination mit C++ verwenden, erhalten Sie die beste Leistung für WinRT, da C++ systemeigener Code ist. Wenn Sie stattdessen C# verwenden, hängen Sie von der CLR (Common Language Runtime) ab, die langsamer als systemeigener Code ist.
- Reference 1
- Reference 2

Zweitens, wenn Sie werden eine Menge von JavaScript-Bibliotheken enthalten, die Sie wahrscheinlich, wird es einen Einfluss auf die Leistung haben. (jQuery, jqQuery plugins, backbone.js, ...)

Dann, wie Sie sagten, wird das HTML5 in JS mit IE-Engine gerendert. Das ist also schwierig. Es hängt wirklich davon ab, wie Sie Ihren Code schreiben werden. Für Best Practices für XAML und JS können Sie here suchen.

Aus eigener Erfahrung. Ich habe eine App mit XAML/C# geschrieben. Es fühlt sich besser an als Windows Phone 7 und 7.5. Vor allem, weil sie .NET reduziert haben. Das neue async und await Modell ist ziemlich gut zu. Sie können in Ihrem Fall einfach asynchrone Aufrufe, Webservice oder Bild-Rendering implementieren.

Aber ich bin auch an den Zahlen interessiert, also wenn jemand einen Test gemacht hat, wäre das großartig.

+0

Der Link zu den Best Practices war sehr nützlich, danke und enthält Informationen darüber, wie jede Plattform funktioniert. –

+10

Nur um zu verdeutlichen, ist die XAML-Rendering-Engine reine C++/COM, ob Sie C++ oder C# verwenden. Der Code in C# verwendet im Wesentlichen die CLR, das Rendering jedoch nicht. Es gibt eine Leistungseinbuße für den Zugriff auf Benutzeroberflächenelemente über Code, da Sie die CLR-COM-Grenze überschreiten müssen. Dies ist jedoch minimal. Jede Präsentation, die keine Interaktion mit Code erfordert (z. B. Animationen), sollte mit derselben Geschwindigkeit ausgeführt werden, unabhängig davon, ob Sie in C++ oder C# arbeiten. Die restlichen Anmerkungen zu JS sind gültig, aber es ist erwähnenswert, dass WinRT bei der ersten Ausführung JavaScript-Code "JIT-Kompilieren" ausführt. –

+0

@ JaredBienz-MSFT, macht ein FlipView (zum Beispiel) mit JS-Aufruf in die gleiche C++ - Rendering-Engine wie ein FlipView in C#? Oder ist das JS FlipView völlig anders implementiert und mit JS/HTML wie benutzerdefinierte Steuerelemente in JS? –

3

IE10 verfügt über eine hardwarebeschleunigte Engine, einschließlich einer GPU-beschleunigten HTML5-Zeichenfläche. Das bedeutet, dass das Rendern in HTML5 wahrscheinlich genauso schnell ist wie in XAML, da beide Wege die GPU zum Rendern verwenden.

Logik kann in JS einige Male langsamer sein, aber oft ist es egal. Wenn Ihre App nicht durch eine große Menge an Logikverarbeitung blockiert ist und viele Apps einfach nur ereignisgesteuert sind und keine schweren Schleifen haben, ist JS wahrscheinlich schnell genug.

Dann möchten Sie vielleicht berücksichtigen, es ist viel einfacher, HTML5 auf andere Plattformen zu portieren.

2

Geschwindigkeit ist nicht wirklich ein großes Problem, es sei denn, Sie tun einige, die eine intensive Verarbeitung erfordert oder in einem bestimmten Zeitfenster ausgeführt werden muss.

In Wirklichkeit ist das Computing so schnell geworden, dass die Zeit für die Optimierung von der Implementierung neuer nützlicher Funktionen nur noch wenig Zeit in Anspruch nimmt. Nur dort optimieren, wo es nötig ist.

Ich würde sagen, treffen Sie Ihre Wahl basierend auf der Funktionalität der 2, und wie gut Sie jede von ihnen kennen. Wirklich ein paar Millisekunden sind nicht wirklich viel zu befürchten. Ich würde sagen, dass die meisten Ihrer Endanwender nicht Ihre Anwendung benchmarken, sondern eher von Funktionen und Funktionen.

Wir laufen nicht mehr auf 64kb RAM und 400mhz CPUs.

Natürlich geht das davon aus, dass Sie nicht prozessorintensiv sind. Wenn Sie es sind, dann suchen Sie die falschen Technologien zusammen.