Có hiệu suất nào để đạt được trong những ngày này kể từ khi biên dịch java sang mã nguồn gốc, hoặc làm trình biên dịch điểm phát sóng hiện đại kết thúc bằng cách này theo thời gian không?Hiệu suất đạt được trong việc biên dịch java thành mã gốc?
Trả lời
Có một cuộc thảo luận tương tự ở đây gần đây, cho câu hỏi What are advantages of bytecode over native code?. Bạn có thể tìm thấy câu trả lời thú vị trong chuỗi đó.
Hiệu suất bộ nhớ hoặc hiệu suất CPU? Hay chúng giống nhau vào những ngày này?
Bằng chứng duy nhất của tôi là giai thoại và trên một nền tảng khác: sau khi chuyển một loạt các ứng dụng CPU đến C# (.NET 2.0), tôi không nhận thấy sự mất mát đáng kể về hiệu suất (tôi không xem xét đáng kể 10%). Mã được viết tốt dường như hoạt động tốt trên nhiều kiến trúc khác nhau.
Hầu hết các ứng dụng dành/lãng phí thời gian với:
- hoạt động IO đó sẽ không được hưởng lợi từ tĩnh (thời gian biên dịch) phân tích.
- Thuật toán kém sẽ không được hưởng lợi từ phân tích tĩnh.
- Bố cục bộ nhớ kém trong các vòng bên trong CPU quan trọng. Mặc dù về mặt kỹ thuật, các trình biên dịch có thể giúp chúng tôi ở đây, nhưng tôi vẫn chưa thấy một trình biên dịch thực sự làm bất cứ điều gì thú vị.
Dựa trên trải nghiệm của tôi, trừ khi bạn đang viết codec video, không có lợi ích nào khi biên dịch ứng dụng Java so với chỉ dựa vào trình biên dịch điểm phát sóng.
Một số bằng chứng về giai thoại. Tôi đã làm việc trên một vài ứng dụng tài chính thương mại thời gian thực quan trọng. Tôi đồng ý với Frank, gần như mỗi lần vấn đề của bạn không phải là thiếu sự biên soạn, nó là thuật toán hay cấu trúc dữ liệu của bạn. Các trình biên dịch điểm nóng hiện đại rất tốt với mã đúng, ví dụ: CERN Colt library nằm trong phạm vi 90% của Fortran được biên dịch, tối ưu hóa cho công việc số.
Nếu bạn lo lắng về tốc độ, tôi thực sự khuyên bạn nên sử dụng profiler tốt và lấy bằng chứng về vị trí tắc nghẽn của bạn - Tôi sử dụng YourKit và đã rất hài lòng.
Chúng tôi chỉ sử dụng mã được biên dịch gốc cho tốc độ trong một trường hợp trong vài năm qua và do đó chúng tôi có thể sử dụng CUDA và nhận một số hiệu suất GPU nghiêm trọng.
Câu hỏi của bạn là một chút lớn, câu trả lời khác nhau rất nhiều
- Nếu bạn đang sử dụng Just In Time biên soạn (JIT) hay không
- Khi bạn đang sử dụng ,, nếu quá trình của bạn được thực hiện cho một thời gian dài hoặc không phải là
Tất cả JVM sử dụng JVM gần đây, nhưng trên JVM cũ mã java chậm hơn vài lần so với mã gốc.
Nếu bạn có một máy chủ chạy trong một thời gian dài hoặc lô thực thi cùng một mã một lần nữa và một lần nữa, sự khác biệt và lên rất thấp.
Chúng tôi đã viết cùng một lô cả trong C++ và Java và chạy nó với tập dữ liệu khác nhau, kết quả khác nhau trong khoảng 3 giây, với tập dữ liệu lấy từ 5 phút đến vài giờ.
Nhưng hãy cẩn thận, chúng là trường hợp đặc biệt sẽ có sự khác biệt quan trọng, ví dụ như lô cần nhiều bộ nhớ.
Đã thử Hello-World với sáu cách triển khai khác nhau chỉ để kiểm tra phí trên và sự khác biệt đáng kinh ngạc. Java đã được tắt các bảng xếp hạng trong khi các ngôn ngữ biên soạn đã làm tốt như nhau. Tôi có thể chứng minh tất cả các bằng chứng (trong một bản sao) nếu cần thiết.
- 1. Hiệu suất mã được biên dịch Haxe
- 2. Biên dịch java thành mã gốc?
- 3. Hiệu suất biên dịch mã bằng biên dịch biên dịch
- 4. Hiệu suất đạt được trong việc viết lại mã C# trong C/C++
- 5. Liệu chúng ta vẫn có hiệu suất đạt được của Java 6 nếu bytecode được biên dịch trong 1.4
- 6. Tôi có thể biên dịch Java thành mã gốc không?
- 7. Cách biên dịch ocaml thành mã gốc
- 8. Biên dịch C# thành Gốc?
- 9. JavaScript được biên dịch/biên dịch nhỏ so với JavaScript chưa nén về hiệu suất
- 10. Hiệu suất đạt được từ các phôi kiểu C++?
- 11. Mã C# có được biên dịch thành các tệp nhị phân gốc không?
- 12. nếu điều kiện vs &&, có hiệu suất nào đạt được
- 13. Hiệu suất đạt được từ GPU với MATLAB?
- 14. Biên dịch Java thành asm.js
- 15. Có hiệu suất đạt được trong việc loại bỏ các không gian tên không cần thiết (sử dụng) không?
- 16. Biên dịch mã OpenMP thành mã C
- 17. Mục tiêu-C có biên dịch thành mã gốc hoặc mã byte không?
- 18. Không biên dịch thành mã gốc trong .Net loại bỏ MSIL hoàn toàn?
- 19. Hiệu suất của việc gọi mã không được quản lý từ mã được quản lý
- 20. Có trình biên dịch mã máy gốc cho JavaScript không?
- 21. Biên dịch mã Java được viết cho 1.5 để làm việc với 1.4 JRE?
- 22. Biên dịch mã PHP thành mã hóa và mã hóa được thực thi
- 23. Tư vấn về hiệu suất mã hóa tệp trong Java
- 24. Cách để đạt được các đặc điểm Java hiệu quả?
- 25. Mã C# không được biên dịch có biên dịch thành IL và chạy trên CLR không?
- 26. Làm thế nào để biên dịch tập lệnh Lua thành một tệp thực thi duy nhất, trong khi vẫn đạt được trình biên dịch LuaJIT nhanh?
- 27. mã được biên dịch lẻ
- 28. Hiệu suất đạt được bằng cách sử dụng thuộc tính Thông tin người gọi
- 29. là có bất kỳ loại hiệu suất đạt được trong khi sử dụng các tập tin .pyc trong python?
- 30. Lợi ích hiệu suất của đầu nối gốc Apache Tomcat
Hello World không đại diện cho khối lượng công việc thực tế của cuộc sống, và tôi nghi ngờ nó được tối ưu hóa bởi JVM. Đối với những trường hợp rất nhỏ như thế này, Java rất có khả năng bị mất so với các ngôn ngữ được biên dịch. – nhahtdh