ΠΡΠΈΠ²Π΅ΡΡΡΠ²ΡΡ ΡΠ΅Π±Ρ, ΡΡΡΠ°Π½Π½ΠΈΠΊ!
Π ΡΡΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΡΠΎΠ±ΡΠ°Π½Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Π½Π° ΠΊΡΡΡΠ΅ Π’-Π±Π°Π½ΠΊ "ΠΠΊΠ°Π΄Π΅ΠΌΠΈΡ ΠΡΠΊΠ΅Π½Π΄Π°"
ΠΠ΅ ΠΎΡΡΠ°Π²Π»ΡΠΉ ΡΡΠΎΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π±Π΅Π· Π·Π²ΡΠ·Π΄ΠΎΡΠΊΠΈ, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π±ΡΠ» ΡΠ΅Π±Π΅ ΠΏΠΎΠ»Π΅Π·Π΅Π½ π
ΠΠ±Π·ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΡΡ ΠΈ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡΡ
ΠΡΠΎΠ΅ΠΊΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΌΠΎΠ΄ΡΠ»Ρ:
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°:
- CΡΠ°Π²Π½Π΅Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π² Java Ρ ΠΏΠΎΠΌΠΎΡΡΡ JMH (Java Microbenchmarking Harness).
- Java 22 βοΈ
- Lombok πΆοΈ
- Maven
ΠΡΠΈΠΌΠ΅Ρ ΡΠ°Π±ΠΎΡΡ:
Benchmark | Score | Units |
---|---|---|
ReflectionBenchmark.directAccess | 0.633 | ns/op |
ReflectionBenchmark.lambdaMetafactoryAccess | 0.811 | ns/op |
ReflectionBenchmark.methodHandlesAccess | 3.221 | ns/op |
ReflectionBenchmark.reflectionAccess | 5.888 | ns/op |
Π Π°Π·Π±ΠΎΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² ΠΈ ΡΠ΅Ρ Π½ΠΈΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΠ, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌ
ΠΡΠΎΠ΅ΠΊΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΌΠΎΠ΄ΡΠ»Ρ:
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°:
- ΠΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΉ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΉ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ
- Π Π΅Π½Π΄Π΅ΡΠΈΠ½Π³ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Ρ ΠΎΡΡΡ ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΠΈ
- Π’ΠΈΠΏΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ: (Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ΅, ΡΠ΅ΡΠ΄ΡΠ΅Π²ΠΈΠ½Π½ΠΎΠ΅, Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅, ΠΏΠΎΠ»ΡΡΠ½ΠΎΠ΅, ΡΠΈΠ½ΡΡΠΎΠΈΠ΄Π°Π»ΡΠ½ΠΎΠ΅, ΡΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅)
- ΠΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
- Java 22 βοΈ
- JCommander
- Lombok πΆοΈ
- JUnit 5
- Maven
ΠΡΠΈΠΌΠ΅Ρ ΡΠ°Π±ΠΎΡΡ:
ΠΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΉ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ | ΠΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΉ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ | |
---|---|---|
ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ 1920 Π½Π° 1080: | 30894.8 ms | 7091.2 ms |
ΠΠΎΠ³ΡΡΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΠ, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠ½ΠΈΡ-ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΈΡΡΠ΅ΠΌΡ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ
ΠΡΠΎΠ΅ΠΊΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΌΠΎΠ΄ΡΠ»Ρ:
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°:
- ΠΠ°ΡΡΠΈΠ½Π³ NGINX Π»ΠΎΠ³ΠΎΠ²
- Π²ΡΠ²ΠΎΠ΄: 95 ΠΏΠ΅ΡΡΠ΅Π½ΡΠΈΠ»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΎΡΠ²Π΅ΡΠ°, Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠ΅ΡΡΡΡΠΎΠ², ΡΠΈΡΠ°Π΅ΠΌΡΠ΅ ΠΊΠΎΠ΄Ρ ΠΎΡΠ²Π΅ΡΠ° ΠΈ Π΄Ρ.
- StreamAPI - Π΄Π»Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π»ΠΎΠ³ΠΎΠ²
- Java 22 βοΈ
- JCommander
- Lombok πΆοΈ
- JUnit 5
- Maven
ΠΡΠΈΠΌΠ΅Ρ ΡΠ°Π±ΠΎΡΡ:
ΠΠ±Π·ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ
ΠΡΠΎΠ΅ΠΊΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΌΠΎΠ΄ΡΠ»Ρ:
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°:
- ΠΠ»Π³ΠΎΡΠΈΡΠΌΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π»Π°Π±ΠΈΡΠΈΠ½ΡΠΎΠ² - Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΡΠΈΠΌΠ° ΠΈ ΠΡΠ°ΡΠΊΠ°Π»Π°.
- ΠΠ»Π³ΠΎΡΠΈΡΠΌΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΡΡΠΈ - ΠΏΠΎΠΈΡΠΊ Π² ΡΠΈΡΠΈΠ½Ρ (BFS) ΠΈ Π* (A-star).
- Java 22 βοΈ
- Lombok πΆοΈ
- JUnit 5
- Maven
ΠΡΠΈΠΌΠ΅Ρ ΡΠ°Π±ΠΎΡΡ:
ΠΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΡΠΈΠ»Π΅ΠΉ ΠΈ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΠΎΠ΅, ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΡΠΎΠ΅ΠΊΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΌΠΎΠ΄ΡΠ»Ρ:
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°:
- Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΡΠ΅Π· ΠΏΠ°ΡΡΠ΅ΡΠ½ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅
- Java 22 βοΈ
- Lombok πΆοΈ
- JUnit 5
- Maven