2010-09-09 15 views
10

Sono interessato a fare un gioco usando html e javascript. Mi stavo chiedendo se è davvero molto più veloce disegnare in html5 e javascript piuttosto che con immagini e div in html e javascript.Qual è la differenza di velocità tra il disegno con html5 canvas e html e javascript?

Esempio di un gioco usando HTML e JavaScript che funziona bene: http://scrabb.ly/

esempio di un gioco utilizzando HTML5 e javascript che funziona bene: http://htmlchess.sourceforge.net/demo/example.html

risposta

13

Ho eseguito un sacco di numeri su drawi in HTML ng rispetto al disegno su tela. Potrei fare un enorme post sui benefici di ciascuno, ma darò alcuni dei risultati rilevanti dei miei test da considerare per la tua applicazione specifica:

Ho realizzato pagine di test Canvas e HTML, entrambi avevano "nodi" mobili. I nodi Canvas erano oggetti che ho creato e tenuto traccia di in Javascript. I nodi HTML erano <div> s, sebbene potessero essere <image> o <video>.

Ho aggiunto 100.000 nodi a ciascuno dei miei due test. Si sono comportati in modo molto diverso:

La scheda di test HTML ha richiesto un caricamento per sempre (cronometrata a poco meno di 5 minuti, chrome ha chiesto di chiudere la pagina la prima volta). Il task manager di Chrome afferma che la scheda occupa 168 MB. Quando lo guardo, occupa il 12-13% della CPU, lo 0% quando non guardo.

La scheda Canvas è caricata in un secondo e occupa 30 MB. Inoltre, occupa il 13% del tempo di CPU tutto il tempo, indipendentemente dal fatto che lo si guardi o meno.

Trascinando nella pagina HTML è più liscia, che suppongo è previsto, dal momento che la configurazione attuale è quello di ridisegnare TUTTO ogni 30 millisecondi nel test Canvas. Ci sono molte ottimizzazioni da fare per Canvas per questo. (l'invalidazione della tela è la più semplice, anche le regioni di ritaglio, il ridisegno selettivo, ecc.dipende solo da quanto hai voglia di implementare)

Il video sulla pagina HTML, mentre non sto spostando oggetti, è in realtà perfettamente liscio.

Su tela il video è sempre lento, dal momento che sto ridisegnando costantemente perché ho disattivato l'invalidazione della tela di disegno. C'è ovviamente molto spazio per migliorare.

Il disegno/caricamento da solo è lontano da più veloce nella tela e ha molto più spazio per le ottimizzazioni (ad esempio, escludere le cose fuori dallo schermo è molto semplice).

+3

Hai una demo che potresti fornire per ciascuno come esempio? – Steropes

2

Nessuno di quei giochi richiede HTML 5. scrabb. fa tutto con oggetti rettangolari, che i div si maneggiano bene, e il gioco degli scacchi non usa nemmeno l'animazione. Se questo è il tipo di gioco che stai pensando di costruire, allora quello che usi dovrebbe essere deciso sulla base della familiarità e della compatibilità piuttosto che delle prestazioni.

3

Veloce come nel rendering più veloce o nello sviluppo più veloce? Direi che la risposta ad entrambi è la tela HTML5. Anche se è una tecnologia abbastanza nuova, e non ancora supportata da tutti i principali browser, ha già molte più funzionalità di quelle che si avrebbero utilizzando i DIV con il normale HTML. Ho già disegnato con i div ed è stato incredibilmente frustrante trovare qualcosa su cui lavorare. Con canvas hai già un framework per fare il disegno di base. Inoltre, html5 è nuovo. Anche se è relativamente più lento del disegno con div al momento (che probabilmente non lo è), tale performance aumenterà con lo sviluppo e l'adozione. Non posso dire lo stesso per disegnare con div.

Pro di utilizzare HTML5 Canvas:

  • Simile ad altri quadri di disegno (OpenGL, DirectX)
  • continueranno ad aumentare in termini di prestazioni e funzionalità
  • può diventare accelerazione hardware in futuro
  • Possibile infrastruttura 3D in futuro
Problemi correlati