Tôi đang làm việc trên dự án Maven và tôi muốn sử dụng jmh để chuẩn mã của mình. Tôi muốn tổ chức dự án của mình để nó chứa mã nguồn, kiểm tra đơn vị và điểm chuẩn. Dường như có một cách để chấm điểm chuẩn mã của bạn mà không cần tạo một dự án gradle riêng biệt (xem link). Có cách nào để làm điều này trong Maven không?Sử dụng jmh để mã điểm chuẩn mà không cần tạo dự án maven riêng lẻ
5
A
Trả lời
7
Câu trả lời ngắn gọn là có.
tôi đi qua để bố trí thư mục này trong các dự án của tôi (nhưng bạn chắc chắn có thể thay đổi nó)
+- src/
+- main/java - sources
+- test/
+- java - test sources
+- perf - benchmarks
Bạn cần một vài plugin để đạt được điều đó.
build-helper-maven-plugin
để đính kèm tùy chỉnh nguồn kiểm tra vị trí
<execution>
<id>add-test-source</id>
<phase>generate-test-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>src/test/perf</source>
</sources>
</configuration>
</execution>
maven-compiler-plugin
để chạyjmh-generator-annprocess
xử lý chú thích trêntest-compile
giai đoạn
<execution>
<goals>
<goal>testCompile</goal>
</goals>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId>
<version>${jmh.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</execution>
maven-assembly-plugin
để tạo jar Runnable với tiêu chuẩn
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<attach>true</attach>
<archive>
<manifest>
<mainClass>org.openjdk.jmh.Main</mainClass>
</manifest>
</archive>
</configuration>
</execution>
<assembly>
<id>perf-tests</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<outputDirectory>/</outputDirectory>
<useProjectArtifact>true</useProjectArtifact>
<unpack>true</unpack>
<scope>test</scope>
</dependencySet>
</dependencySets>
<fileSets>
<fileSet>
<directory>${project.build.directory}/test-classes</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>**/*</include>
</includes>
<useDefaultExcludes>true</useDefaultExcludes>
</fileSet>
</fileSets>
</assembly>
Sau đó bạn sẽ nhận được một jar thực thi với tiêu chuẩn có thể được chạy như bình thường
java -jar target/your-project-version-perf-tests.jar
Bạn có thể xem ví dụ làm việc here.
LƯU Ý
Hạn chế duy nhất của giải pháp này là tất cả các lớp học thử nghiệm và phụ thuộc kiểm tra cũng sẽ được đưa vào jar với tiêu chuẩn mà chắc chắn bloats nó lên. Nhưng bạn có thể tránh nó bằng cách biên dịch điểm chuẩn trong thư mục riêng biệt (khác với ${project.build.directory}/test-classes
).
Các vấn đề liên quan
- 1. Tạo dự án maven
- 2. Sử dụng đĩa CD nhật thực mà không cần tạo dự án
- 3. làm thế nào để xây dựng dự án với maven mà không cần phiên bản
- 4. Làm thế nào để điểm chuẩn '&' vs '%' chi phí một cách chính xác, sử dụng JMH
- 5. Điểm chuẩn Java HashMap Nhận (JMH vs Looping)
- 6. Sử dụng scalaz trong giao diện điều khiển repl mà không cần tạo dự án
- 7. Sử dụng Maven cho dự án R
- 8. Sử dụng Maven để phân phối dự án
- 9. Ưu điểm và nhược điểm của việc sử dụng sbt vs maven trong dự án Scala
- 10. Tạo maven nhiều mô-đun và tạo các mô-đun riêng lẻ một cách độc lập?
- 11. Xây dựng dự án Maven mà không cần chạy thử nghiệm đơn vị
- 12. Làm thế nào để triển khai dự án Angular2 mà không cần sử dụng CLI
- 13. Sử dụng MSBuild để xây dựng Mô hình khung thực thể mà không cần sử dụng tệp dự án?
- 14. Tìm mã không sử dụng trong dự án được mô đun hoá Maven
- 15. Tạo cây mô-đun dự án maven?
- 16. Làm thế nào để sử dụng Django 1.8.5 ORM mà không cần tạo một dự án django?
- 17. Tổ chức dự án sử dụng Maven + Git
- 18. Maven - Làm thế nào để xây dựng nhiều dự án độc lập Maven từ một dự án
- 19. Maven mã nguồn dự án không hoạt động
- 20. Tạo trò chơi mà không cần sử dụng SpriteKit
- 21. Sử dụng Maven cho các dự án C/C++
- 22. Sử dụng Ổi trong Dự án GWT Maven
- 23. Làm thế nào để cộng tác trong một dự án sử dụng Git mà không cần sử dụng Github?
- 24. Cách tốt nhất để viết mã xem xét dự án phát triển đơn lẻ của riêng tôi?
- 25. Làm thế nào để kiểm tra ứng dụng đơn lẻ (không phải dự án) ở Django?
- 26. Dự án Maven Run
- 27. Làm thế nào để chạy một dự án maven/lớp chính trong netbeans mà không cần xây dựng đầu tiên?
- 28. Ưu điểm và nhược điểm để giữ mã và dữ liệu trong các kho lưu trữ riêng lẻ
- 29. Mở các tệp main.py khác nhau trong Eclipse mà không cần tạo dự án mới
- 30. Xóa các tham chiếu không được sử dụng (! = Sử dụng) trong dự án C# mà không cần Resharper?
Trong ví dụ làm việc của bạn (ví dụ: doSomethingTest trong ExampleBenchmark.java), tốt hơn là tránh vòng lặp for, vì nó dẫn đến kết quả hiệu suất không mong muốn do tối ưu hóa vòng lặp trong JVM. –