2012-09-03 15 views
5

Questo può sembrare innocuo, ma quando lo fa 1000+ volte a 30 fotogrammi al secondo, si aggiunge. Ho 3 dimensioni di cerchi che disegno, ognuno con il proprio colore di riempimento (RGBA). È più veloce per me disegnarli come immagini una volta e usare drawImage() con gli URL di dati o per fare arc() per ognuno di essi?Tela arco() vs drawImage()

Ulteriori informazioni:

  • Utilizzando un'unica tela per tutti i cerchi
  • Contesto e tela sono memorizzati nella cache
  • bando completo per l'arco in questo momento sembra

    this.scene.context .arc (newLocation, this.y + = this.speed/80, this.distance/2, 0, Math.PI * 2, false);

+0

Se avete già il vostro codice, è possibile controllare quale versione è più veloce a [jsperf] (http://jsperf.com/) – jbalsas

+0

Se finisci per usare il metodo arc() puoi ottimizzare quella linea. Ad esempio, imposta il contesto come variabile locale se in una funzione, o solo come variabile, in modo che "questo" e "scena" non debbano essere cercati e fare i calcoli una volta. Ad esempio var TWOPI = Math.PI * 2 – Richard

risposta

6

enter image description here

Secondo my tests, drawImage() sta per essere significativamente più veloce nella maggior parte dei casi che usare arc().

La funzione drawImage() può prendere sia un elemento <img> o <canvas> come parametro, e in Firefox, utilizzando un tag <img> era più veloce, anche se gli altri browser hanno dimostrato il contrario.

Che cosa si riduce a: Anche per le forme semplici, utilizzare drawImage()