Ich habe eine Reihe von Zahlen auf HTML-Drawi ausgeführt ng gegenüber Canvas-made Zeichnung. Ich könnte einen großen Beitrag über die Vorteile von jedem machen, aber ich werde einige der relevanten Ergebnisse meiner Tests für Ihre spezifische Anwendung berücksichtigen:
Ich machte Canvas und HTML-Test-Seiten, beide hatten bewegliche "Knoten". Canvas-Knoten waren Objekte, die ich in Javascript erstellt und verfolgt habe. HTML Knoten waren <div>
s, obwohl sie <image>
oder <video>
auch sein könnte.
Ich habe 100.000 Knoten zu jedem meiner beiden Tests. Sie führten ganz anders:
Die HTML-Test Tab dauerte ewig zu Last (bei etwas weniger als 5 Minuten getaktet, Chrom der Seite zum ersten Mal zu töten, bat). Der Task-Manager von Chrome sagt, dass die Registerkarte 168 MB belegt. Es dauert 12-13% CPU-Zeit, wenn ich es ansehe, 0%, wenn ich nicht hinsehe.
Die Leinwand-Registerkarte in einer Sekunde geladen und 30MB in Anspruch nimmt. Es nimmt auch immer 13% der CPU-Zeit auf, egal ob man es betrachtet oder nicht.
Ziehen auf der HTML-Seite ist glatter, was vermutlich erwartet wird, da das aktuelle Setup ist, alles im Scan-Test alle 30 Millisekunden neu zu zeichnen. Hier gibt es viele Optimierungen für Canvas. (Canvas-Invalidation ist die einfachste, auch Clipping-Regionen, selektives Neuzeichnen, etc ..hängt nur davon ab, wie viel Sie gerne implementieren)
Video auf der HTML-Seite, während ich keine Objekte bewegen, ist eigentlich perfekt glatt.
Auf der Leinwand ist das Video immer langsam, da ich ständig neu zeichne, weil ich meine Zeichenleinwand für ungültig erklärt habe. Es gibt natürlich viel Raum für Verbesserungen.
Drawing/loading alone ist weit schneller in Canvas und hat auch viel mehr Platz für Optimierungen (dh, Dinge außerhalb des Bildschirms auszuschließen ist sehr einfach).
Haben Sie eine Demo, die Sie für jeden als Beispiel bereitstellen könnten? – Steropes