Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/quick-perf/quickperf

QuickPerf is a testing library for Java to quickly evaluate and improve some performance-related properties
https://github.com/quick-perf/quickperf

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

Last synced: 5 days ago
JSON representation

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

Awesome Lists containing this project

README

        


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

---

## [📙 Documentation](https://github.com/quick-perf/doc/wiki/QuickPerf)


### Annotations

:point_right: [Core](https://github.com/quick-perf/doc/wiki/core-annotations)

:point_right: [JVM](https://github.com/quick-perf/doc/wiki/jvm-annotations)

:point_right: [SQL](https://github.com/quick-perf/doc/wiki/sql-annotations)

[more...](https://github.com/quick-perf/doc/wiki/QuickPerf#annotation-scopes)

### Frameworks and Test Frameworks

:point_right: [Spring](https://github.com/quick-perf/doc/wiki/Spring)

[more...](https://github.com/quick-perf/doc/wiki/QuickPerf#execute-quickperf)

:point_right: [JUnit 4](https://github.com/quick-perf/doc/wiki/JUnit-4)

:point_right: [JUnit 5](https://github.com/quick-perf/doc/wiki/JUnit-5)

:point_right: [TestNG](https://github.com/quick-perf/doc/wiki/TestNG)

[more...](https://github.com/quick-perf/doc/wiki/QuickPerf#execute-quickperf)

### Frequently Asked Questions

[more...](https://github.com/quick-perf/doc/wiki/Frequently-Asked-Questions)

## Usage
### JVM annotations

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

📙 [All the JVM annotations](https://github.com/quick-perf/doc/wiki/JVM-annotations)    :mag_right: Examples with [JUnit4](https://github.com/quick-perf/quickperf-examples/blob/master/jvm-junit4/src/test/java/org/quickperf/jvm/JvmAnnotationsJunit4Test.java), [Junit5](https://github.com/quick-perf/quickperf-examples/blob/master/jvm-junit5/src/test/java/org/quickperf/jvm/JvmAnnotationsJunit5Test.java), [TestNG](https://github.com/quick-perf/quickperf-examples/blob/master/jvm-testng/src/test/java/org/quickperf/jvm/JvmAnnotationsTestNGTest.java)    :mag_right: [Heap allocation of Apache Maven](https://github.com/quick-perf/maven-test-bench)

### **SQL annotations**

```java
@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](https://github.com/quick-perf/doc/wiki/SQL-annotations)    :mag_right: [Spring Boot & JUnit 4](https://github.com/quick-perf/quickperf-examples/tree/master/springboot-junit4)    :mag_right: [Spring Boot & JUnit 5](https://github.com/quick-perf/quickperf-examples/tree/master/springboot-junit5)

## Talks and videos

### [English](https://www.youtube.com/playlist?list=PLyRtZQwOxA6e7hOpc_n0WJ0exOYyVaS_b)

### [French](https://www.youtube.com/playlist?list=PLyRtZQwOxA6c8cpz7k_ZuIMAY4hvDwBzI)

## Something to ask us?

:e-mail: [email protected]

💬 Want to chat with us? Join us on [gitter](https://gitter.im/quickperf)

:octocat: Do you prefer to use a Github issue to ask a question? [Create a question issue](https://github.com/quick-perf/quickperf/issues/new?assignees=&labels=question&template=question.md&title=)

## Show your support
Please ⭐ this repository or [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social&label=Tweet%20to%20support%20QuickPerf)](https://twitter.com/intent/tweet?text=You%20can%20use%20%40QuickPerf%20to%20quickly%20evaluate%20some%20Java%20performance%20properties%0Ahttps%3A%2F%2Fgithub.com%2Fquick-perf%2Fquickperf%0A) 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](https://img.shields.io/badge/With%20%E2%9D%A4%EF%B8%8F%20by-Zenika-b51432.svg)](https://oss.zenika.com)

## License
[Apache License 2.0](/LICENSE.txt)