Java prestanda är långt ifrån trivial till riktmärke eftersom det påverkas av olika faktorer såsom Java-programmet, dess ingång, den virtuella maskinen, sophämtning, högstorlek, etc. Dessutom gör icke-determinism vid run-time avrättningstiden för ett Java-program att skilja sig från kör till kör. Det finns ett antal källor till icke-determinism såsom Just-In-Time (JIT) sammanställning och optimering i den virtuella maskinen (VM) drivs av timerbaserad metod provtagning, tråd schemaläggning, sophämtning, och olika systemeffekter. Det finns ett brett utbud av Java performance evaluation methods som används av forskare och benchmarkingers. Dessa metoder skiljer sig från varandra på flera olika sätt. Vissa rapporterar genomsnittliga resultat under ett antal körningar av samma experiment, andra rapporterar det bästa eller näst bästa resultatet som observerats, medan andra rapporterar det sämsta. Vissa itererar riktmärket flera gånger inom en enda VM-anrop; andra överväger flera VM-anrop och itererar ett enda riktmärkesutförande; andra överväger flera VM-anrop och itererar riktmärket flera gånger. Detta dokument visar att vanliga metoder kan vara vilseledande och till och med leda till felaktiga slutsatser. Anledningen är att dataanalysen inte är statistiskt rigorös. I detta dokument presenterar vi en undersökning av befintliga Java prestandautvärderingsmetoder och diskuterar vikten av statistiskt rigorös dataanalys för att hantera icke-determinism. Vi förespråkar metoder för att kvantifiera start- och steady-state-prestanda, och dessutom tillhandahåller vi JavaStats-programvaran för att automatiskt erhålla prestandanummer på ett rigoröst sätt. Även om detta dokument fokuserar på Java prestandautvärdering, många av de frågor som tas upp i detta dokument gäller också andra programmeringsspråk och system som bygger på ett hanterat körtidssystem.
Till exempel, i fallet med Java, just-in-time sammanställning, maskinvaruplattformar, virtuella maskin implementationer, eller sophämtning körs kan alla avsevärt påverka testresultat REF.
Statistically rigorous java performance evaluation
{'venue': "OOPSLA '07", 'journal': None, 'mag_field_of_study': ['Computer Science']}