2012-10-12 4 views
5

thể trùng lặp:
How do I write a correct micro-benchmark in Java?Benchmarking trong scala

Hãy nói rằng tôi có hai thuật toán, làm thế nào để tìm ra ai có hiệu suất cao hơn?

Tôi có nghĩa là tôi có thể chứng minh nó bằng toán học nhưng nếu tôi sử dụng một số thư viện, điều này có thể trở nên tẻ nhạt. Tôi không bao giờ học được cách tôi làm điểm chuẩn chính xác mà không có toán học.

Trả lời

6

Cách nhanh chóng là sử dụng testing.Benchmark: bạn chỉ cần viết một cái gì đó giống như

object Bench extends testing.Benchmark { 
    // initialize your data here 
    def run() { 
    // code to benchmark here 
    } 
} 

mà bạn chạy với một cái gì đó giống như scala Bench 5 1000000 (hoặc trực tiếp từ IDE của bạn, chỉnh sửa cấu hình chạy), mang đến cho bạn timings trong 5 bộ 1000000 lặp lại của phương pháp run(). Bạn có thể so sánh thời gian cho mỗi bộ và kiểm tra nó đã trở nên nhất quán (tập đầu tiên thường chậm hơn do khởi động JVM).

Để có cách tiếp cận nghiêm ngặt hơn bằng cách sử dụng Caliper, khung công tác kiểm định vi sinh của Java, hãy xem bài đăng trên blog này: http://www.decodified.com/scala/2011/04/19/microbenchmarking-scala-code.

+3

'testing.Benchmark' hiện không được dùng nữa trong Scala 2.10 –

+14

Sẽ tuyệt vời nếu tài liệu của nó được đề cập TẠI SAO nó bị phản đối hoặc những gì bạn phải sử dụng thay cho ... –