Domanda

(Non sono sicuro che questo dovrebbe essere acceso https://softwareEngineering.stackexchange.com/ o no, commenta se lo pensi)

Sto per creare un punto di riferimento per le implementazioni WebGL per la mia tesi di laurea. Non sono sicuro di quale tipo di test dovrei creare e se dovrei misurare solo i frame per secondi se potessi ottenere altri dati utili da confrontare ...

Attualmente ho solo pensato a test del genere:

  • 1 oggetto colorato singolo
  • 1 oggetto a più colorati
  • 1 oggetto strutturato
  • 1 oggetto strutturato con fusione
  • 1 oggetto strutturato con fulmini
  • 1 oggetto strutturato con più punti di illuminazione
  • 1 scena resa alla trama e usala su un altro oggetto
  • 1 animazione modello
  • Tutti i test con più oggetti: 50, 500, 5000
  • Cambiare shader/programmi per rendering (una volta, due volte, più volte)

Ciò comporterebbe 40 test diversi, ma non sono sicuro che si tratti di test significativi per le prestazioni.

Un amico ha suggerito di testare su uno shader complesso, ma poiché lo shader è in esecuzione sull'hardware grafico non dovrebbe esserci una differenza per un'applicazione desktop Java, giusto?

Comunque la mia sensazione è che le prestazioni di JavaScript è il collo di bottiglia principale in WebGL.

Aggiornare

Finalmente ho fatto il mio test. Dopo una discussione sul modo in cui il punto di riferimento dovrebbe funzionare, ho creato quanto segue: http://martin.cyor.eu/benchmark

È stato utile?

Soluzione

Ciò che scegli di benchmark dovrebbe dipendere da cosa intendi fare con i punteggi di riferimento (o chi sono il pubblico previsto per i punteggi e cosa intendono fare con loro); Presumibilmente dovrebbero influenzare una decisione: dovresti iniziare con quella decisione e lavorare all'indietro da quello per capire cosa dovrebbe misurare il punto di riferimento.

Direi che la tua lista proposta cade all'estremità "sintetica" dello spettro di benchmarking; Sembrano il genere di cose che sarebbero più utili per un implementatore WebGL/browser con un profiler che per qualcuno che cerca di scegliere tra implementazioni/piattaforme WebGL per decidere quale probabilmente eseguirà meglio le app (cfr, la storia del benchmarking OpenGL dove tutti tipi di assurdità erano richieste per numeri sintetici poligoni per secondi fino a SpecViewPerf venne e imposto alcuni casi di test realistici nel mondo reale).

Altri suggerimenti

Sono d'accordo con @Timday che dovresti distorcere la tua indagine verso qualcosa di "reale", e come hai suggerito in un commento che potresti voler essere la storia per decidere tra un'app basata sul desktop o sul browser.

Questo è esattamente ciò su cui sto lavorando in questo momento. Il mio client ha un'applicazione di visualizzazione che attualmente funziona sul desktop di Windows. Una scena tipica per loro ha 500.000 triangoli, molte trame e trasparenza. Attualmente i loro utenti non sono inclinati a installare lo spettatore: tendono a lavorare in ambienti aziendali in cui gli sysadmins controllano ciò che è installato sui loro computer. E diversi utenti preferirebbero eseguire la visualizzazione sui loro iPad, in cui lo spettatore non avrebbe comunque eseguito. Quindi il mio cliente vuole sapere se WebGL risolverebbe i problemi della loro piattaforma, non importa che nessun browser supporti ufficialmente WebGL e che né IE né iPad hanno annunciato alcun tipo di supporto.

Tieni presente che tutti i parametri di riferimento che fai sono relativamente insignificanti, perché stai misurando un bersaglio in movimento. I produttori di browser stanno lavorando duramente per implementare WebGL e stanno aggiornando frequentemente le versioni beta. Non solo stanno lavorando per l'implementazione di WebGL in modo conforme, ma devono preoccuparsi dei problemi di sicurezza del browser e del flusso complessivo della pipeline. Questo video Parla di alcuni dei problemi (e ti dà un'idea di cosa guardare). Inoltre, le prestazioni possono variare a seconda del tuo sistema operativo e dell'hardware grafico.

Come hai sottolineato, una volta che WebGL è in esecuzione nell'hardware grafico, dovrebbe funzionare velocemente come un'app desktop. I tuoi parametri di riferimento dovrebbero provare a confermarlo, e quindi dovresti provare a misurare dove si perde le prestazioni a causa di essere in un browser. La mia sensazione è che JavaScript di per sé non sia il collo di bottiglia, solo perché non c'è molto JavaScript da eseguire (ed è abbastanza veloce in questi giorni). Tuttavia, come descritto verso la fine del video di cui sopra, potrebbero esserci inefficienze che sorgono nel legame JavaScript-C ++, la convalida della richiesta, il controllo del flusso e cosa no. D'altra parte, i produttori di browser (almeno Google) stanno lavorando duramente per stirare quei nodi.

Una delle cose che ho notato non sono problemi di framera/prestazioni (nel mio test attuale, posso rendere 500.000 triangoli strutturati a 30 fps), ma che i framerati non sembrano essere molto coerenti e che i telai sembrano essere lasciati cadere di volta in volta. Sospetto, ma non so se questo ha a che fare con il relativamente semplice setInterval() modo o eseguendo animazioni in javascript. (Mozrequestanimationframe di Mozilla potrebbe essere un modo per gestirlo meglio).

Anche se non so quanto sia utile nessuno dei precedenti per la tua tesi, mi sembra che tu abbia un argomento ricco e dovresti fare di più che inventare semplici parametri di riferimento. Forse dovresti iniziare su alcuni parametri di riferimento, confrontare le prestazioni del browser contro il desktop, quindi provare a esaminare le migliori pratiche non solo per decidere tra browser e desktop, ma anche per la scrittura di app WebGL.

Ci sono anche alcuni quadri WebGL là fuori. Ho provato un paio e sono rimasto molto colpito: c'è molto da imparare da loro. A seconda dei tuoi interessi e dei requisiti di tesi, potresti essere interessato a benchmarking.

Qualunque cosa tu vada, sospetto che ci sia una vasta comunità di aspiranti utenti di Webgl che moriranno di fame per il tipo di informazioni che stai ricercando.

Non vado a visitare questo sito, quindi trovo un po 'divertente che io abbia appena letto la tua domanda perché sto anche scrivendo la mia bathesis su quell'argomento. Un mese fa stavo pensando allo stesso problema e ho deciso di non confrontare i diversi quadri WebGL l'uno contro l'altro principalmente perché penso che la differenza principale potrebbe risiedere nella biblioteca matematica che usano. Come hai detto, arrivo anche alla conclusione, che non ci dovrebbe essere una differenza nelle parti in esecuzione sulla GPU. Confrontare la grafica WebGL e Desktop è stato qualcosa a cui non ho pensato, ma potrebbe essere utile. Tieni presente che le recenti implementazioni WebGL di Chrome e Firefox usano DirectX tramite angolo su Windows per impostazione predefinita.

BTW ecco una specie di benchmark Webgl: http://webgl-bench.appspot.com/

Buona fortuna!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top