Skip to content

QuickPerf is a testing library for Java to quickly evaluate and improve some performance-related properties

License

Notifications You must be signed in to change notification settings

quick-perf/quickperf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

QuickPerf

QuickPerf is a testing library for Java to quickly evaluate and improve some performance-related properties


Maven Central Β Β  Reproducible Builds Β Β  License Β Β  Build Status Β Β  quickperf.io


Annotations

πŸ‘‰ Core

πŸ‘‰ JVM

πŸ‘‰ SQL

more...

Frameworks and Test Frameworks

πŸ‘‰ Spring

more...


πŸ‘‰ JUnit 4

πŸ‘‰ JUnit 5

πŸ‘‰ TestNG

more...

Frequently Asked Questions

more...

Usage

JVM annotations

    @MeasureHeapAllocation
    @HeapSize(value = 1, unit = AllocationUnit.GIGA_BYTE)
    @Test
    public void execute_batch() {
        ...
    }

πŸ“™ All the JVM annotations Β Β  πŸ”Ž Examples with JUnit4, Junit5, TestNG Β Β  πŸ”Ž Heap allocation of Apache Maven

SQL annotations

    @ExpectSelect(1)
    @Test
    public void should_find_all_players() {
     ...
    }
[PERF] You may think that <1> select statement was sent to the database
       But there are in fact <10>...

πŸ’£ You may have even more select statements with production data.
Be careful with the cost of JDBC roundtrips: https://blog.jooq.org/2017/12/18/the-cost-of-jdbc-server-roundtrips/

Auto-detection of Hibernate and Spring Data JPA:

πŸ’‘ Perhaps you are facing an N+1 select issue
	* With Hibernate, you may fix it by using JOIN FETCH
	                                       or LEFT JOIN FETCH
	                                       or FetchType.LAZY
	                                       or ...
	* With Spring Data JPA, you may fix it by adding @EntityGraph(attributePaths = { "..." })
      	  on repository method: https://docs.spring.io/spring-data/jpa/docs/current/reference/ht

πŸ“™ All the SQL annotations Β Β  πŸ”Ž Spring Boot & JUnit 4 Β Β  πŸ”Ž Spring Boot & JUnit 5

Talks and videos

Something to ask us?

πŸ“§ [email protected]

πŸ’¬ Want to chat with us? Join us on gitter

:octocat: Do you prefer to use a Github issue to ask a question? Create a question issue

Show your support

Please ⭐ this repository or Tweet if this project helped you!

Contributing

You are very welcome to contribute to QuickPerf! You can contribute in many ways. Some relatively easy things can be done. Other issues are more challenging. Each contribution is appreciated. Read our contributing guide to learn more.

Contributors

Many thanks to all our contributors!

Jean Bisutti
Jean Bisutti

πŸ’» ⚠ πŸ“– 🎨
πŸ’‘ πŸ‘€ πŸ“’
guiRagh
Guillaume Raghoumandan

πŸ’» ⚠
Patrice CAVEZZAN
Patrice Cavezzan

πŸ’» πŸš‡ πŸ“–
Alexandre Blanchard
Alexandre Blanchard

πŸ› πŸ’»
Eric McDowell
Eric McDowell

πŸ’»
Jan KrΓΌger
Jan KrΓΌger

πŸ’»
LoΓ―c Mathieu
LoΓ―c Mathieu

πŸ’» πŸ’‘ πŸ“–
Daniel Bentley
Daniel Bentley

πŸš‡
Gaurav Deshpande
Gaurav Deshpande

⚠
rdm100
rdm100

πŸ“–
Artus de Benque
Artus de Benque

πŸ› πŸ’»
Minh-Trieu Ha
Minh-Trieu Ha

πŸ’»
Bakary Djiba
Bakary Djiba

πŸ’»
C Faisal
C Faisal

πŸ’»
Thami Inaflas
Thami Inaflas

πŸ’»
JosΓ© Paumard
JosΓ© Paumard

πŸ’»
Edward Rose
Edward Rose

πŸ’»
Ubaid ur Rehman
Ubaid ur Rehman

πŸ’»
Giuseppe B.
Giuseppe B.

πŸ’»
Fabrice
Fabrice

πŸ’» πŸ“–
Navneet Kumar
Navneet Kumar

πŸ’»
Charles Sabourdin
Charles Sabourdin

πŸ“–
Mohamed Karaga
Mohamed Karaga

πŸ› πŸ’»
HervΓ© Boutemy
HervΓ© Boutemy

πŸ“¦
Franck Demeyer
Franck Demeyer

πŸ› πŸ’»
Oliver Hughes
Oliver Hughes

πŸ’»
Hedley Proctor
Hedley Proctor

πŸ’»
rsassi
rsassi

πŸ› πŸ’»
emoji key

Sponsors

Many thanks Zenika for sponsoring this project!

with love by zenika

License

Apache License 2.0