Domanda

Oggi ho visitato jsperf E ora mi chiedo ...

  1. Cos'è "OPS/sec"?
  2. Quante iterazioni fa?
  3. 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.

È stato utile?

Soluzione

scrissi Benchmark.js, quale jsperf usi.

  1. "ops/sec"Sta per le operazioni al secondo. Questo è quante volte si prevede che un test eseguirà in un secondo.

  2. 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 per 5 Secondi (configurabile), o quantomeno 5 corse (anche configurabile), quindi eseguire analisi statistiche sul campione. Quindi, un test può essere ripetuto 100,000 volte in 50 ms (il tempo di esecuzione minimo per la maggior parte degli ambienti), quindi ripetuti 100 volte di più (5 secondi). Una dimensione del campione più grande (In questo esempio, 100), porta a un più piccolo margine di errore.

  3. 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 un 5.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.

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