2014-07-13 14 views
9

I http://openjdk.java.net/projects/code-tools/jmh/ für Benchmarking verwende und ich bekomme ein Ergebnis wie:Was bedeutet OpenJDK JMH "score error" genau?

 
Benchmark       Mode Samples  Score Score error Units 
o.a.f.c.j.b.TestClass.test1  avgt   5 2372870,600 210897,743 us/op 
o.a.f.c.j.b.TestClass.test2  avgt   5 2079931,850 394727,671 us/op 
o.a.f.c.j.b.TestClass.test3  avgt   5 26585,818 21105,739 us/op 
o.a.f.c.j.b.TestClass.test4  avgt   5 19113,230  8012,852 us/op 
o.a.f.c.j.b.TestClass.test5  avgt   5  2586,413  1949,487 us/op 
o.a.f.c.j.b.TestClass.test6  avgt   5  1942,963  1619,967 us/op 
o.a.f.c.j.b.TestClass.test7  avgt   5  233,902  73,861 us/op 
o.a.f.c.j.b.TestClass.test8  avgt   5  191,970  126,682 us/op 

Was die Spalte bedeutet „Fehler Score“ genau bedeutet und wie sie zu interpretieren?

Antwort

15

Dies ist die Fehlerquote für die Punktzahl. In den meisten Fällen ist das eine Hälfte von confidence interval. Denken Sie darüber nach, als ob zwischen "Score" und "Score error" ein "±" Zeichen steht. In der Tat wird das für Menschen lesbare Protokoll, dass zeigen:

Result: 1.986 ±(99.9%) 0.009 ops/ns [Average] 
    Statistics: (min, avg, max) = (1.984, 1.986, 1.990), stdev = 0.002 
    Confidence interval (99.9%): [1.977, 1.995] 


# Run complete. Total time: 00:00:12 

Benchmark     Mode Samples Score Score error Units 
o.o.j.s.HelloWorld.hello thrpt  5 1.986  0.009 ops/ns 
+0

vielen Dank ... – salyh

+1

Btw, ich denke, Zimmer hier für Verbesserungen gibt. jmh leidet unter "falscher Präzision" (https://en.wikipedia.org/wiki/False_precision), wie Sie aus den OP-Daten sehen können. Die angezeigten signifikanten Stellen der Messung bedeuten fälschlicherweise eine höhere Genauigkeit als der Fehler. Zum Beispiel ist es nicht sinnvoll, "1.776361 ± 0.154321" zu sagen. Am besten wäre es 1,78 ± 0,15. Jede weitere Ziffer ist wegen der Größe des Fehlers eine falsche Genauigkeit. Seien Sie also vorsichtig mit Präzision in Jmh. –