Hoặc sử dụng ghci -fobject-code -O Test.hs
hoặc cabal repl --ghc-options="-fobject-code -O"
. Cụ thể hơn:
ghci phải được gọi với -fobject-code
flag.
Cờ tối ưu hóa phải được cấp sautrên dòng lệnh hoặc trong một OPTIONS_GHC pragma ở đầu mô-đun. Đang thử ghc --interactive -O -fobject-code
tạo ra cảnh báo rằng "-O xung đột với --interactive; -O bị bỏ qua". Đây có lẽ là một lỗi.
Nếu bạn đang làm việc trên một dự án cabalized và sử dụng cabal repl
, bạn cần phải vượt qua các cờ hoặc trên dòng lệnh (ví dụ: cabal repl --ghc-options="-fobject-code -O"
) hoặc trong một pragma. Cabal (hiện tại) loại bỏ các cờ tối ưu được đặt trong tệp .cabal với ghc-options
khi gọi ghci; trên thực tế, nó đặt rõ ràng -O0
thay thế. Đây có lẽ là một lỗi.
Lưu ý trong bất kỳ trường hợp đó bạn đôi khi cần phải biên dịch lại buộc thủ công khi chuyển đổi giữa các chế độ tối ưu hóa và được tối ưu hóa. Xây dựng các tạo phẩm, vì một số lý do, không bị vô hiệu khi cờ tối ưu hóa thay đổi miễn là -fobject-code
vẫn tiếp tục. Nếu, bắt đầu từ một slate sạch, bạn có -fobject-code
được đặt trong tệp .cabal của bạn, chạy cabal repl
để biên dịch mô-đun, và sau đó nhớ bạn cần đặt -O trên dòng lệnh và chạy cabal repl --ghc-options=-O
, ghc sẽ vui lòng tải trước đó được biên dịch , mô-đun chưa được tối ưu hóa. Đây cũng có lẽ là một lỗi.
Kịch bản đáng tin cậy nhất để thử nghiệm một mô-đun đơn có vẻ là đặt {-# OPTIONS_GHC -fobject-code -O #-}
ở đầu mô-đun. Bạn sẽ nhận được mã tối ưu cho dù bạn gọi ghci như thế nào. Tôi đã không điều tra những gì xảy ra trong các tình huống đa mô-đun trong đó một số nhưng không phải tất cả các mô-đun đều có pragma.
Ngẫu nhiên, lưu ý rằng chỉ mã trong mô-đun được tối ưu hóa. Ngay cả khi tối ưu hóa, việc đánh giá g
trong repl sẽ luôn sản xuất False
, vì đầu vào thay thế không phải tuân theo các quy tắc viết lại.
Nguồn
2015-01-10 22:07:09
Vì vậy, có vẻ như với tôi điều này có thể là một cách để thực sự chức năng thời gian và đo lường hiệu suất biểu diễn thông qua GHCi. Bạn hoặc bất kỳ ai có thể chấp nhận hoặc từ chối không? – MasterMastic
@ChristianConkle bạn đã xem chủ đề này chưa? http://stackoverflow.com/questions/27541609/difference-in-performance-of-compiled-accelerate-code-ran-from-ghci-and-shell –
@WojciechDanilo - Có. Tôi vừa đăng bình luận ở đó. (Tôi không nghĩ rằng tôi có thể @ thông báo cho bạn trong chủ đề đó vì bạn chưa nhận xét.) –