Warum ist es, dass diese:Warum sind mehrere Aufrufe von fillRect() langsamer als ein Aufruf von fillRect()?
var rows = 80
var cols = 120
var tw = 5
for(var i = 0; i < rows; i++){
for(var j = 0; j < cols; j++){
context.fillRect(j*tw, i*tw, tw, tw)
}
}
läuft so viel langsamer als das:
context.fillRect(0, 0, canvas.width, canvas.height)
, wenn sie in der gleichen Anzahl von Pixeln zu füllen? Ich dachte naiv, dass fillRec()
nur eine Reihe von Pixeln ausfüllen würde, aber offensichtlich macht es etwas anderes. Was macht es sonst noch?
Für jeden Aufruf gibt es eine Menge von Eingangsvariablen Typ-Konvertierung, Validierung Parametern sein wird, ruft in dem, was Grafik-Engine die sie verwenden, etc, etc, dass bald die tatsächliche Pixel Zeichnung aufwiegen. Des Weiteren kann die Pixel Zeichnung Optimierungen haben für Zeichnung 4 oder 8 Pixel in einer einzigen Anweisung, die Sie nicht in Anspruch nehmen können, wenn zu einem Zeitpunkt, um ein Pixel zu tun. –