Làm thế nào để xem phần nào trong mã của bạn được chạy thường xuyên nhất?


11

Tôi muốn có thể xem mã nào trong hàng ngàn dòng mã nguồn được chạy thường xuyên nhất và mất nhiều thời gian nhất. Mục đích của việc này sẽ là để tối ưu hóa.

Việc có thể xem phần nào của mã được chạy thường xuyên là rất quan trọng để tối ưu hóa, bởi vì những phần đó là nơi tôi nên tập trung để tăng tốc. Đồng thời, một số mã được chạy rất thường xuyên nhưng hầu như không mất thời gian, do đó, điều quan trọng là có thể xem mã nào mất nhiều thời gian nhất.

Tôi đoán rằng tốt nhất của cả hai thế giới sẽ là một chương trình cộng lại lượng thời gian mà một đoạn mã mất, bao gồm TẤT CẢ số lần nó được chạy (để tìm ra điều gì làm chậm mã của bạn một cách tổng thể nhất). Có một loại công cụ cho việc này?


Bạn có một sở thích cho hệ điều hành hoặc ngôn ngữ lập trình?
Mawg nói rằng phục hồi Monica

Câu trả lời:


15

Những gì bạn đang tìm kiếm là hồ sơ :

Trong công nghệ phần mềm, profiling ("profiling chương trình", "profiling phần mềm") là một dạng phân tích chương trình động, đo lường, ví dụ, không gian (bộ nhớ) hoặc độ phức tạp thời gian của chương trình, sử dụng các hướng dẫn cụ thể hoặc tần suất và thời lượng của các cuộc gọi chức năng. Việc sử dụng phổ biến nhất của thông tin hồ sơ là để hỗ trợ tối ưu hóa chương trình.

Có một số ứng dụng như vậy. Đôi khi, những thứ này được tích hợp vào chính IDE. Idb netbeans là một trong những công cụ như vậy có một trình tạo hồ sơ được xây dựng. nhập mô tả hình ảnh ở đây

Một công cụ như vậy là vm trực quan .

nhập mô tả hình ảnh ở đây

Profiler có thể làm việc theo những cách khác nhau - và người ta nên nhận thức được sự khác biệt. Một cách tiếp cận là mỗi giây để chụp ảnh nhanh các luồng đang chạy và xem phương thức nào hiện đang được gọi cho mỗi luồng. Điều này sử dụng một mẫu của những gì ở ngoài kia.

Cách tiếp cận khác là sử dụng mã byte java để báo cáo lại thời gian bắt đầu và dừng thời gian cho ứng dụng khác.

Viết một hồ sơ không quá khó đối với một java có kỹ năng. IBM có một bài viết về cách viết hồ sơ của riêng bạn (với mã nguồn!). Cái này dựa trên Trình tương tác Java .

Có vô số trình biên dịch ngoài kia - cả miễn phí và thương mại (làm thế nào về trình lược tả được nối với các phiên bản JVM có thể báo cáo lại cho bạn (email hoặc một số thông báo khác) khi các phương thức cụ thể vượt quá thời gian chạy dự kiến? chương trình báo cáo lại khi yêu cầu web mất quá nhiều thời gian - có hồ sơ lịch sử cho yêu cầu đó được lưu lại để kiểm tra sau không?). Bạn chỉ cần biết những gì bạn đang tìm kiếm để bắt đầu tìm thấy chúng và đi từ đó.

Khi bạn đã có hồ sơ, bạn sẽ diễn giải các kết quả hồ sơ .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.