What's wrong with my benchmark results?: Studying bad practices in JMH benchmarks

Microbenchmarking frameworks, such as Java's Microbenchmark Harness (JMH), allow developers to write fine-grained performance test suites at the method or statement level. However, due to the complexities of the Java Virtual Machine, developers often struggle with writing expressive JMH benchma...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Hauptverfasser: Damesceno Costa, Diego Elias (VerfasserIn) , Bezemer, Cor-Paul (VerfasserIn) , Leitner, Philipp (VerfasserIn) , Andrzejak, Artur (VerfasserIn)
Dokumenttyp: Article (Journal)
Sprache:Englisch
Veröffentlicht: 16 July 2021
In: IEEE transactions on software engineering
Year: 2021, Jahrgang: 47, Heft: 7, Pages: 1452-1467
ISSN:1939-3520
DOI:10.1109/TSE.2019.2925345
Online-Zugang:Verlag, lizenzpflichtig, Volltext: https://doi.org/10.1109/TSE.2019.2925345
Verlag, lizenzpflichtig, Volltext: https://gateway.webofknowledge.com/gateway/Gateway.cgi?GWVersion=2&SrcAuth=DOISource&SrcApp=WOS&KeyAID=10.1109%2FTSE.2019.2925345&DestApp=DOI&SrcAppSID=F4YMMc9jPB5f9dX7ixC&SrcJTitle=IEEE+TRANSACTIONS+ON+SOFTWARE+ENGINEERING&DestDOIRegistrantName=Institute+of+Electrical+and+Electronics+Engineers
Volltext
Verfasserangaben:Diego Costa, Cor-Paul Bezemer, Philipp Leitner, and Artur Andrzejak

MARC

LEADER 00000caa a2200000 c 4500
001 1769678883
003 DE-627
005 20220820041948.0
007 cr uuu---uuuuu
008 210908s2021 xx |||||o 00| ||eng c
024 7 |a 10.1109/TSE.2019.2925345  |2 doi 
035 |a (DE-627)1769678883 
035 |a (DE-599)KXP1769678883 
035 |a (OCoLC)1341421133 
040 |a DE-627  |b ger  |c DE-627  |e rda 
041 |a eng 
084 |a 28  |2 sdnb 
100 1 |a Damesceno Costa, Diego Elias  |d 1991-  |e VerfasserIn  |0 (DE-588)1194500528  |0 (DE-627)1676516069  |4 aut 
245 1 0 |a What's wrong with my benchmark results?  |b Studying bad practices in JMH benchmarks  |c Diego Costa, Cor-Paul Bezemer, Philipp Leitner, and Artur Andrzejak 
264 1 |c 16 July 2021 
300 |a 16 
336 |a Text  |b txt  |2 rdacontent 
337 |a Computermedien  |b c  |2 rdamedia 
338 |a Online-Ressource  |b cr  |2 rdacarrier 
500 |a Gesehen am 08.09.2021 
520 |a Microbenchmarking frameworks, such as Java's Microbenchmark Harness (JMH), allow developers to write fine-grained performance test suites at the method or statement level. However, due to the complexities of the Java Virtual Machine, developers often struggle with writing expressive JMH benchmarks which accurately represent the performance of such methods or statements. In this paper, we empirically study bad practices of JMH benchmarks. We present a tool that leverages static analysis to identify 5 bad JMH practices. Our empirical study of 123 open source Java-based systems shows that each of these 5 bad practices are prevalent in open source software. Further, we conduct several experiments to quantify the impact of each bad practice in multiple case studies, and find that bad practices often significantly impact the benchmark results. To validate our experimental results, we constructed seven patches that fix the identified bad practices for six of the studied open source projects, of which six were merged into the main branch of the project. In this paper, we show that developers struggle with accurate Java microbenchmarking, and provide several recommendations to developers of microbenchmarking frameworks on how to improve future versions of their framework. 
650 4 |a bad practices 
650 4 |a Benchmark testing 
650 4 |a Java 
650 4 |a jmh 
650 4 |a microbenchmarking 
650 4 |a Optimization 
650 4 |a Performance testing 
650 4 |a static analysis 
650 4 |a Static analysis 
650 4 |a Tools 
650 4 |a Writing 
700 1 |a Bezemer, Cor-Paul  |e VerfasserIn  |4 aut 
700 1 |a Leitner, Philipp  |e VerfasserIn  |4 aut 
700 1 |a Andrzejak, Artur  |d 1969-  |e VerfasserIn  |0 (DE-588)122012216  |0 (DE-627)705736253  |0 (DE-576)29304712X  |4 aut 
773 0 8 |i Enthalten in  |a Institute of Electrical and Electronics Engineers  |t IEEE transactions on software engineering  |d Piscataway, NJ : IEEE Service Center, 1975  |g 47(2021), 7, Seite 1452-1467  |h Online-Ressource  |w (DE-627)324452942  |w (DE-600)2026617-0  |w (DE-576)094402078  |x 1939-3520  |7 nnas 
773 1 8 |g volume:47  |g year:2021  |g number:7  |g pages:1452-1467  |g extent:16  |a What's wrong with my benchmark results? Studying bad practices in JMH benchmarks 
856 4 0 |u https://doi.org/10.1109/TSE.2019.2925345  |x Verlag  |x Resolving-System  |z lizenzpflichtig  |3 Volltext 
856 4 0 |u https://gateway.webofknowledge.com/gateway/Gateway.cgi?GWVersion=2&SrcAuth=DOISource&SrcApp=WOS&KeyAID=10.1109%2FTSE.2019.2925345&DestApp=DOI&SrcAppSID=F4YMMc9jPB5f9dX7ixC&SrcJTitle=IEEE+TRANSACTIONS+ON+SOFTWARE+ENGINEERING&DestDOIRegistrantName=Institute+of+Electrical+and+Electronics+Engineers  |x Verlag  |z lizenzpflichtig  |3 Volltext 
951 |a AR 
992 |a 20210908 
993 |a Article 
994 |a 2021 
998 |g 122012216  |a Andrzejak, Artur  |m 122012216:Andrzejak, Artur  |d 110000  |d 110300  |e 110000PA122012216  |e 110300PA122012216  |k 0/110000/  |k 1/110000/110300/  |p 4  |y j 
998 |g 1194500528  |a Damesceno Costa, Diego Elias  |m 1194500528:Damesceno Costa, Diego Elias  |p 1  |x j 
999 |a KXP-PPN1769678883  |e 3974848827 
BIB |a Y 
SER |a journal 
JSO |a {"title":[{"title_sort":"What's wrong with my benchmark results?","subtitle":"Studying bad practices in JMH benchmarks","title":"What's wrong with my benchmark results?"}],"person":[{"role":"aut","roleDisplay":"VerfasserIn","display":"Damesceno Costa, Diego Elias","given":"Diego Elias","family":"Damesceno Costa"},{"display":"Bezemer, Cor-Paul","roleDisplay":"VerfasserIn","role":"aut","family":"Bezemer","given":"Cor-Paul"},{"role":"aut","display":"Leitner, Philipp","roleDisplay":"VerfasserIn","given":"Philipp","family":"Leitner"},{"family":"Andrzejak","given":"Artur","display":"Andrzejak, Artur","roleDisplay":"VerfasserIn","role":"aut"}],"note":["Gesehen am 08.09.2021"],"type":{"media":"Online-Ressource","bibl":"article-journal"},"recId":"1769678883","language":["eng"],"origin":[{"dateIssuedDisp":"16 July 2021","dateIssuedKey":"2021"}],"id":{"doi":["10.1109/TSE.2019.2925345"],"eki":["1769678883"]},"name":{"displayForm":["Diego Costa, Cor-Paul Bezemer, Philipp Leitner, and Artur Andrzejak"]},"physDesc":[{"extent":"16 S."}],"relHost":[{"id":{"issn":["1939-3520"],"eki":["324452942"],"zdb":["2026617-0"]},"origin":[{"dateIssuedDisp":"1975-","dateIssuedKey":"1975","publisher":"IEEE Service Center","publisherPlace":"Piscataway, NJ"}],"name":{"displayForm":["Institute of Electrical and Electronics Engineers"]},"physDesc":[{"extent":"Online-Ressource"}],"title":[{"title_sort":"IEEE transactions on software engineering","subtitle":"TSE","title":"IEEE transactions on software engineering"}],"part":{"year":"2021","issue":"7","pages":"1452-1467","volume":"47","text":"47(2021), 7, Seite 1452-1467","extent":"16"},"titleAlt":[{"title":"Transactions on software engineering"},{"title":"TSE"}],"pubHistory":["1.1975 -"],"recId":"324452942","corporate":[{"display":"Institute of Electrical and Electronics Engineers","roleDisplay":"VerfasserIn","role":"aut"}],"language":["eng"],"disp":"Institute of Electrical and Electronics EngineersIEEE transactions on software engineering","note":["Gesehen am 20.07.2023"],"type":{"bibl":"periodical","media":"Online-Ressource"}}]} 
SRT |a DAMESCENOCWHATSWRONG1620