Là một phần của bài tập ở trường, tôi muốn so sánh và đối chiếu các thuật toán sắp xếp như một bài tập Java.Sắp xếp vòng thứ hai nhanh hơn
Tôi đã tự thực hiện các thuật toán sắp xếp và sắp xếp các đối tượng của một lớp Person
thực hiện giao diện Comparable
.
Cho đến nay rất tốt, nhưng những gì tôi không thể giải thích là tại sao trong lần gọi đầu tiên đến phương pháp phân loại của tôi, việc phân loại mất nhiều thời gian hơn các cuộc gọi tiếp theo?
Kết quả dưới đây thể hiện kết quả của tôi.
nhất, xấu nhất và Avg tham khảo các mảng không được phân loại được truyền cho phương thức sắp xếp:
- xuất sắc nhất: mảng đã được sắp xếp
- xấu nhất: mảng được sắp xếp theo thứ tự ngược
- Avg: các đối tượng trong mảng đang ở thứ tự ngẫu nhiên
Đây là kết quả của tôi:
1-call of the sorting methods
InsertionSort Best:1799ms Worst:78ms Avg:789ms
MergeSort Best:10ms Worst:3ms Avg:5ms
2-call of the sorting methods
InsertionSort Best:1065ms Worst:39ms Avg:691ms
MergeSort Best:3ms Worst:2ms Avg:5ms
3-call of the sorting methods
InsertionSort Best:1066ms Worst:39ms Avg:692ms
MergeSort Best:3ms Worst:2ms Avg:5ms
4-call of the sorting methods
InsertionSort Best:1065ms Worst:39ms Avg:691ms
MergeSort Best:3ms Worst:2ms Avg:5ms
JVM có thực hiện bất kỳ tối ưu hóa nào cho các cuộc gọi tiếp theo không?
Tôi bối rối và đánh giá cao sự giúp đỡ của bạn!
Chỉnh sửa: Cảm ơn bạn đã đề xuất và trả lời cho đến thời điểm này! Để thực hiện một vài điểm rõ ràng - mỗi cuộc gọi trong đầu ra của tôi tham khảo thời gian cần để phân loại hoàn toàn!
Sau mỗi lần sắp xếp, tôi thực hiện một cuộc gọi mới với các mảng UNSORTED một lần nữa!
mã nguồn của tôi có thể được tải về như một dự án nhật thực như là một file zip, tại liên kết Dropbox sau: dropbox link to eclipse project.zip
T.B. Tôi không có kinh nghiệm với profilers - nếu bạn có thể chỉ cho tôi một hướng dẫn hoặc như vậy sẽ là tuyệt vời.
Bạn có thể đăng mã không? –
Bạn có đang trộn lại dữ liệu giữa các lần chạy không? – user1676075
Điều này khó nói mà không có bất kỳ mã nào; và ví dụ; nó có thể phụ thuộc vào cách bạn đo lường. Có một số cạm bẫy mà người ta có thể gặp phải liên quan đến đo lường hiệu suất. Đôi khi, ví dụ, trình biên dịch Java trong thời gian thực hiện những điều thú vị. – GhostCat