quick-perf/quickperf

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

Java

542

477 commits

updated Oct 18, 2026

See the code

README

QuickPerf


Maven Central    Reproducible Builds    License    Build Status    quickperf.io


📙 Documentation

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

English

French

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!

emoji key

License

Apache License 2.0

allocation
hibernate
java-flight-recorder
java-flight-recordings
jdbc
junit
jvm
microservice
microservices
n-plus-1
nplus1
orm
performance
performance-analysis
performance-testing
profiling
spring
spring-boot
spring-data-jpa
sql

quick-perf/quickperf

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

Java

542

477 commits

updated Oct 18, 2026

See the code

README

QuickPerf


Maven Central    Reproducible Builds    License    Build Status    quickperf.io


📙 Documentation

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

English

French

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!

emoji key

License

Apache License 2.0

allocation
hibernate
java-flight-recorder
java-flight-recordings
jdbc
junit
jvm
microservice
microservices
n-plus-1
nplus1
orm
performance
performance-analysis
performance-testing
profiling
spring
spring-boot
spring-data-jpa
sql

Project health

Overall

3.9/10

Maintained

5/10

Code review

0/10
OpenSSF Scorecard

Latest release

1.1.0 · Sep 28, 2021

Releases this year

0

Significant stargazers

Jochen Schalanda

291 followers · starred Nov 2020

Martin Grigorov

312 followers · starred Nov 2020

Eddú Meléndez Gonzales

533 followers · starred Nov 2019

Alex Blewitt

174 followers · starred Nov 2020