Tôi đang cố gắng thực hiện một số điểm chuẩn của các JVM chạy trên các nền tảng phần cứng và hệ điều hành khác nhau. Tôi đã tạo một thuật toán để thực hiện các phần của JVM mà tôi quan tâm và có ý định chạy thuật toán này nhiều lần để tìm mức trung bình khá.Đang tải xuống lớp java của lớp học
Khi tôi chạy benchmark, tôi thấy rằng thời gian đầu tiên là dài hơn đáng kể hơn so với chạy tiếp theo:
132ms
86ms
77ms
89ms
72ms
nghi ngờ của tôi là lớp được nạp một cách lười biếng, đặt một chi phí lớn về thời gian đầu tiên. Trong khi điều này thực sự là một tính năng mà tôi giả định là duy nhất cho mỗi JVM, nó không phải là một trong tôi quan tâm đến thời điểm này.
Có tùy chọn dòng lệnh hoặc thuộc tính tiêu chuẩn để tải các lớp học háo hức không? hoặc có ai có lý thuyết nào khác không?
Tôi không thể nhận được nó sẽ biên dịch mã thêm. hãy giải thích về điều này, và tại sao chỉ sau 10000 lần chạy, người ta có thể nhận được kết quả thích hợp cho vi điểm chuẩn (trung bình) –
"ngưỡng biên dịch" mặc định là 10000. xem '-XX: CompileThreshold = 10000' Điều này có nghĩa là mã không được tối ưu hóa đầy đủ cho đến khi nó chạy 10.000 và bạn có thể muốn bỏ qua các lần chạy này để có được kết quả tốt nhất. Trong mọi trường hợp, tôi đề nghị chạy thử nghiệm trong ít nhất 2-10 giây. –
trong trường hợp đó nếu tôi cung cấp -XX: CompileThreshold = 10, thì chúng tôi rất tốt để kiểm tra nó cho một vòng 10000 (yup, tôi biết nó sẽ chỉ chạy cho một số millisecs) –