Tôi đã đọc kỹ các kỹ thuật biên dịch tối ưu hóa cục bộ nhưng tôi vẫn không hiểu cách chúng được triển khai. Ý tưởng là trình tối ưu hóa xem xét 'cửa sổ' của mã mỗi lần và bằng cách nào đó phát hiện các mẫu và thay thế chúng bằng các phiên bản được tối ưu hóa hơn.Các mẫu tối ưu hóa lổ nhìn trộm
Câu hỏi của tôi là, làm cách nào để khám phá các mẫu này? (giả sử nền tảng của bạn là một máy ảo xuất ra mã lắp ráp cho một máy tính được tạo sẵn, như Hack của Schocken).
Mọi người có thực sự kiểm tra mã theo cách thủ công (sử dụng Biểu đồ kiểm soát hoặc DAG hoặc bất kỳ thứ gì) và sau đó thu thập tất cả các mẫu đã xác định và mã hóa chúng vào trình tối ưu hóa không? Hoặc là có một cách tự động.
Ví dụ: bạn cung cấp mã được tối ưu hóa trong một máy phân tích và nó rút ra các mẫu đã nói. Nếu vậy, làm sao người ta có thể bắt đầu viết một?
Tôi nghĩ điều này thường được gọi là 'lưu vào bộ nhớ cache nội tuyến '. Bạn sẽ tìm thấy nhiều tài liệu cho các công cụ JavaScript gần đây sử dụng kỹ thuật này khi chạy. Xem http://wingolog.org/archives/2012/05/29/inline-cache-applications-in-scheme. – leppie
Thật thú vị, lần đầu tiên tôi gặp phải vấn đề này. Tôi thường suy nghĩ cho các hoạt động như giảm cường độ, đánh giá liên tục, kiểm soát luồng lựa chọn, vv .. – gfountis
Điều này dường như được nhắm mục tiêu tại 'thời gian chạy' có? Hoặc là nó được sử dụng để tạo ra mã lắp ráp chặt chẽ hơn? – gfountis