Tôi quan tâm để biết nếu có tồn tại một cách tiếp cận có mã phương thức java làm đầu vào và xác định hàm chi phí của mã đó (số vòng lặp, ifs/elses, I/Os và những thứ phổ biến khác). Tôi có nghĩa là không chính xác chi phí trong ms nhưng một số chi phí chung mà mã này có thể gây ra. Điều là tôi muốn có thể cho phương pháp tùy ý mà người dùng viết để nói những gì có thể là chi phí của phương pháp như vậy (tất nhiên không tính đến một số tính năng cụ thể như JVM, vv).Có cách nào để xác định hàm chi phí chung của một phương thức java tùy ý?
Trả lời
Tôi không biết nếu một công cụ như vậy tồn tại, nhưng tôi nghi ngờ cả về tính khả thi của nó và khả năng sử dụng của nó:
Đối với tính khả thi của một công cụ như vậy trong trường hợp chung có một cái nhìn tại Halting problem, mà là một phần quan trọng trong những gì bạn đang yêu cầu và đã được chứng minh là undecidable.
Vì khả năng sử dụng của công cụ này, tôi tin rằng việc phân tích mã tĩnh là vô ích, bởi vì một phần quan trọng của hiệu suất của hệ thống phụ thuộc vào các mẫu sử dụng của chúng tôi.
Có một lý do khiến hệ thống đo điểm chuẩn ở thời lượng thời gian chạy không phải là chuyển tiếp thẳng; cùng một phần mềm có thể nhanh chóng đáng kinh ngạc trong một số trường hợp và chậm chạp ở những người khác.
Điều đó nói rằng, có several tools for code complexity analysis, nhưng những chỉ số này tập trung vào độ phức tạp về cấu trúc, liên quan nhiều hơn đến chất lượng và bảo trì hơn hiệu suất.
Đối với số vòng lặp, nếu/elses bạn có thể sử dụng số liệu độ phức tạp chu kỳ. Có những công cụ để tính toán nó. Ví dụ: JavaNCSS. Về những thứ khác, bạn nên quyết định chính xác những gì bạn quan tâm. Có rất nhiều software metrics và một số trong số đó có thể phù hợp với bạn. Nếu không, bạn có thể phát minh ra và thực hiện chúng. Nói, PMD - một công cụ phổ biến khác để thu thập các số liệu khác nhau - cho phép bạn viết các quy tắc của riêng mình.
Nếu bạn muốn tự động dự đoán hiệu suất mã của mình thì bạn sẽ không may mắn. Lý do được chỉ định bởi thkala, những người khác bao gồm biên dịch JVM JIT và tối ưu hóa thời gian chạy. Những người bạn tốt nhất của bạn ở đây là lược tả, kiểm tra hiệu suất (tự động) và phân tích thuật toán. Phân tích tĩnh có thể hiển thị cho bạn một số vấn đề về hiệu suất tiềm năng của như ghép các chuỗi hoặc phân bổ các đối tượng trong một vòng lặp. IDE hiện đại có thể làm điều này. Tuy nhiên, hiệu suất chủ yếu được xác định bởi các thuật toán và kiến trúc, vì vậy bạn hầu như không nhận được nhiều cải tiến về cách phân tích tĩnh.
Xin cảm ơn các bạn! Có, tôi biết rằng sự phức tạp về cấu trúc sẽ không mang lại cho tôi chi phí thực sự nhưng tôi muốn bắt đầu từ đó và sau đó xem những gì khác tôi cần phải tính đến. Tôi sẽ nghiên cứu các liên kết này và xem tôi có thể làm gì. – kepha
- 1. Có chi phí cho mỗi phương thức để phản ánh sự kiện trong Java không?
- 2. Chi phí của các phương thức nội tuyến trong C#
- 3. Làm cách nào để chỉ định nhiều ràng buộc kiểu chung chung trên một phương thức?
- 4. Làm thế nào để xác định chi phí CPU và bộ nhớ của một chức năng?
- 5. Làm thế nào để xác định xem một phương pháp là một trường hợp chung của một phương pháp chung
- 6. Có bất kỳ chi phí nào trong việc sử dụng các phương thức ẩn danh không?
- 7. Các dẫn xuất số của một hàm được xác định tùy ý
- 8. Xác định phương pháp chung
- 9. CLR Hosting: Gọi hàm có chữ ký phương thức tùy ý?
- 10. Có cách nào chung để tạo ra một chuỗi tuyến tính tùy ý trong SQL?
- 11. Làm cách nào để tôi có thể lưu trữ một chi nhánh tùy ý?
- 12. Gọi phương thức không chung chung với các đối số chung được xác định trong một lớp chung
- 13. Làm cách nào để xác định phương thức nào được gọi trong phương thức?
- 14. Làm cách nào tôi có thể xác định động một phương thức bí danh cho một phương thức lớp?
- 15. Làm cách nào để xác định một hàm Scala chung ẩn danh?
- 16. Có cách nào để xác định một phương thức được kế thừa bằng Python không?
- 17. Làm cách nào để trả lại chi phí, được phân loại như là một phần của hàm fmin_cg của scipy
- 18. Chi phí cho các hoạt động chung cho C#?
- 19. chi phí của BTrace
- 20. Xác định phương thức tùy chỉnh trong Doctrine \ ORM \ PersistentCollection
- 21. Truyền một đối tượng có kiểu không xác định làm tham số trong phương thức Java
- 22. Làm thế nào để chạy phương thức đối tượng tùy ý từ chuỗi trong ruby?
- 23. Có cách nào hay để khẳng định trước điều kiện trong các phương thức Java?
- 24. Java đúc có giới thiệu chi phí không? Tại sao?
- 25. Làm cách nào để password_verify xác thực mật khẩu mà không biết muối và chi phí?
- 26. Chi phí hoạt động của proxy động Java
- 27. Làm thế nào để có phương thức Java trả về danh sách chung của bất kỳ loại nào?
- 28. Làm cách nào để tạo kiểu trả về của một phương thức chung?
- 29. Xác định nội bộ của một phương thức Java là gì?
- 30. Có phương pháp chung để lặp lại và in một giá trị trong một bộ sưu tập không xác định?
Câu hỏi này đề cập đến vấn đề sâu trong phân tích tĩnh và nói chung các giải pháp sẽ gần đúng đến mức chúng có thể không thực sự hoạt động đối với trường hợp bạn quan tâm (đọc, phân tích tĩnh là khó). Nếu bạn cung cấp thêm một chút thông tin về * lý do tại sao * bạn muốn điều này, bạn có thể có được nhiều câu trả lời tinh tế hơn cho các công cụ bạn có thể sử dụng. –
Nhiều thuật toán siêu mát mẻ đòi hỏi kỹ thuật khá phức tạp để chứng minh sự phức tạp tiệm cận của chúng. Làm nó từ mã một mình là cho tất cả các mục đích thực tế không thể. –