Come funziona JSperf?
-
13-11-2019 - |
Domanda
Oggi ho visitato jsperf E ora mi chiedo ...
- Cos'è "OPS/sec"?
- Quante iterazioni fa?
- Su quale base calcola quale è più veloce? Qual è la formula dietro questi calcoli?
Esempio: http://jsperf.com/concatenation-vs-Join
Qualcuno può dirmelo?
Grazie in anticipo.
Soluzione
scrissi Benchmark.js, quale jsperf usi.
"
ops/sec
"Sta per le operazioni al secondo. Questo è quante volte si prevede che un test eseguirà in un secondo.Un test viene eseguito ripetutamente fino a quando non raggiunge il tempo minimo necessario per ottenere un percentuale incertezza per la misurazione inferiore o uguale a
1%
. Il numero di iterazioni varierà a seconda della risoluzione del timer dell'ambiente e quante volte un test può eseguire nel tempo di esecuzione minimo. Raccogliamo esecuzioni di test completate per5
Secondi (configurabile), o quantomeno5
corse (anche configurabile), quindi eseguire analisi statistiche sul campione. Quindi, un test può essere ripetuto100,000
volte in50 ms
(il tempo di esecuzione minimo per la maggior parte degli ambienti), quindi ripetuti100
volte di più (5
secondi). Una dimensione del campione più grande (In questo esempio,100
), porta a un più piccolo margine di errore.Basiamo la decisione di quale test è più veloce su più di semplici OPS/SEC, tenendo conto anche del margine di errore. Ad esempio, un test con un OPS/sec inferiore ma un margine di errore più elevato può essere statisticamente indistinguibile da un test con OPS/sec più elevati e margine di errore inferiore.
Abbiamo usato a Welch T-test, Simile a cosa Sunspider usi, ma passati a un T-test a 2 campioni non accoppiato per uguale varianza (La varianza è estremamente piccola) Perché il test t di Welch ha avuto problemi a confrontare OPS/SEC più bassi e OPS/SEC più alti con piccole varianze che hanno causato il gradi di libertà essere calcolato come meno di
1
. Aggiungiamo anche un5.5%
Indennità su test con OPS/SEC simili perché i test del mondo reale hanno mostrato che test identici possono oscillare ~5%
Dal test al re-test. I test t vengono utilizzati per verificare che le differenze tra i test siano statisticamente significante.
Altri suggerimenti
Puoi leggere Bulletproof JavaScript Benchmarks Articolo degli autori. Utilizza Benchmark.js A proposito, che è open source.