Người ta biết rõ rằng Ngôn ngữ Java cho phép người sắp xếp sắp xếp lại các dòng mã được biên dịch miễn là thứ tự lại không có sự khác biệt về ngữ nghĩa mã. Tuy nhiên, trình biên dịch được yêu cầu chỉ bận tâm về sematics như được thấy từ chủ đề hiện tại hiện tại. Nếu đây sắp xếp lại ảnh hưởng đến ngữ nghĩa trong một tình huống đa luồng, nó thường gây ra vấn đề đồng thời (bộ nhớ tầm nhìn)Mô hình bộ nhớ Java: trình biên dịch sắp xếp lại các dòng mã
Câu hỏi của tôi (s):
gì được thực hiện bằng cách cho phép freedm này để trình biên dịch? Là nó thực sự có thể cho trình biên dịch để sản xuất mã đó là hiệu quả hơn bằng cách sắp xếp lại mã? Tôi chưa thấy một trường hợp thực tế cho việc này. Đôi khi tôi cảm thấy rằng những lợi ích nếu có nhiều hơn nhiều so với những rủi ro đồng thời mà điều này có thể đưa ra.
Có cách nào lập trình viên có thể yêu cầu trình biên dịch không sắp xếp lại các dòng như thế này không? Tôi biết rằng bằng cách sử dụng đồng bộ hóa nguyên thủy có hiệu quả xử lý các tác dụng phụ của sắp xếp lại, nhưng tôi hỏi nếu có bất kỳ cách trực tiếp (tùy chọn trình biên dịch) để tắt tính năng này?
Thao tác này sẽ không dừng hướng dẫn sắp xếp lại CPU. ;) –
Và nó làm cho chương trình của bạn chạy rất chậm, vì vậy đây không phải là một tùy chọn hữu ích cho bất kỳ việc sử dụng sản xuất nào. – Jesper