2010-06-04 32 views
40

có ai biết về một công cụ hay thư viện cấu hình tốt cho Clojure không?Công cụ lược tả cho Clojure?

Tôi thích thứ gì đó có thể được sử dụng từ REPL, dọc theo các dòng (with-profiling ...) trong Allegro Common Lisp trở lại trong ngày.

Có bất kỳ điều gì dọc theo các dòng đó không?

Hoặc bạn có bất kỳ kinh nghiệm nào với các trình tạo Java (phi thương mại) hoạt động tốt với Clojure không?

Trả lời

28

Tôi đã tìm thấy VisualVM (xem herehere) để rất thuận tiện. Việc sử dụng nó với Clojure đã được mô tả khoảng một năm trước trong this blog post; theo như tôi thấy, nó không lỗi thời theo bất kỳ cách nào. Lưu ý rằng GUI từ đó bắt đầu trình bày VisualVM có một vùng văn bản nổi bật, nơi người ta có thể nhập các lớp/gói để loại trừ khỏi lược tả - tôi thấy kết quả khá hữu ích khi clojure.* nằm trong danh sách đó.

+0

Cảm ơn con trỏ. Phần màn hình - bộ nhớ heap và việc sử dụng CPU - rất tiện dụng. Nhưng tôi đang đấu tranh với việc nhận được bất cứ điều gì hữu ích từ trình biên dịch CPU. Profiling một giải pháp cho một vấn đề Euler dự án, đóng góp hàng đầu từ mã của tôi là 300ms trong thời gian chạy vài phút ... Có bất cứ điều gì cung cấp cho phương pháp "tổng thời gian" (thời gian dành cho cuộc gọi stack) chứ không phải là "thời gian tự" (thời gian chi tiêu trên đầu trang của ngăn xếp cuộc gọi)? –

+0

Có một câu hỏi SO trên thực tế, http://stackoverflow.com/questions/1892038/total-method-time-in-java-visualvm - lời khuyên để chụp nhanh các kết quả lược tả và phân tích điều đó là tốt, cung cấp cho bạn chế độ xem "cây cuộc gọi" đẹp với tổng thời gian của phương thức được bao gồm. Một điều nữa cần lưu ý là đây là một nơi mà các không gian tên phân khúc đơn lẻ có thể là một vấn đề (AFAICT là nguyên nhân của một số chức năng là "vô hình" trong một phiên lược tả gần đây mà tôi đã thực hiện cùng với Licenser trong #clojure), mặc dù tôi sẽ không hứa họ sẽ phá vỡ mọi thứ trong trường hợp cụ thể của bạn. ;-) –

+0

Tôi sẽ chấp nhận câu trả lời của bạn :) Không hoàn toàn là những gì tôi đang tìm kiếm, nhưng nó có vẻ là gần nhất có sẵn. Cảm ơn. –

9

Chỉ cần tìm thấy profile in Clojure contrib.

Nó không hoạt động với số lượng lớn mã (nó thổi lên với OutOfMemoryError trên một giải pháp Project Euler mà VisualVM xử lý tốt) và nó yêu cầu bạn chèn các cuộc gọi định dạng trong các hàm bạn muốn cấu hình.

Tuy nhiên, đó là một lựa chọn tốt hơn cho VisualVM trong trường hợp bạn chỉ muốn cấu hình một vài hàm.

+2

Điều này đã lỗi thời. –

14

Có một Clojure thư viện hơi mới trong đó cung cấp hồ sơ: https://github.com/ptaoussanis/timbre

+1

Cái này hoạt động. –

+0

Tôi thích điều này hơn VisualVM, vì nó là trọng lượng nhẹ để sử dụng và kiểm soát. –

+0

Điều này dường như chỉ cung cấp thông tin cho ClojureScript. –

3

nhanh heads-up mà tôi đã bị phản đối hồ sơ Timbre cho một chuyên profiling lib Clojure + ClojureScript mới tại https://github.com/ptaoussanis/tufte.

Về cơ bản, tinh chỉnh nội dung từ Timbre, cộng với tài liệu chuyên dụng.

README bao gồm comparison với các công cụ JVM như VisualVM, YourKit, v.v.

Các vấn đề liên quan