Cách tiếp cận CPS của người dùng đã làm hại rất nhiều đến hiệu suất trong SML / NJ; lý luận mong muốn


11

Trong một nhận xét cho Học tập F #: Những cuốn sách sử dụng các ngôn ngữ lập trình khác có thể được dịch sang F # để tìm hiểu các khái niệm chức năng? Makarius tuyên bố:

Lưu ý rằng phương pháp "CPS" đã gây hại rất lớn đến hiệu suất trong SML / NJ. Mô hình đánh giá vật lý của nó vi phạm quá nhiều giả định được tích hợp vào phần cứng. Nếu bạn sử dụng các ứng dụng tượng trưng lớn của SML như Isabelle / HOL, SML / NJ với CPS sẽ xuất hiện. Chậm hơn 100 lần so với Poly / ML với ngăn xếp thông thường của nó.

Ai đó có thể giải thích lý do cho việc này? (Tốt nhất là với một số ví dụ) Có sự không phù hợp trở kháng ở đây không?


1
Sự hiểu biết của tôi là phần cứng giả định một kỷ luật ngăn xếp, và vì vậy phương pháp CPS thực hiện một cú đánh hiệu suất vì không tuân thủ giả định này. Nhưng đó chỉ là ý kiến ​​không hiểu của tôi.
Andrej Bauer

Câu trả lời:


9

Ở lần xấp xỉ đầu tiên, có một sự khác biệt về "địa phương" của việc truy cập bộ nhớ, khi một chương trình chỉ chạy về phía trước trên đống theo kiểu CPS, thay vì tăng và thu hẹp truyền thống. Cũng lưu ý rằng CPS sẽ luôn cần GC để khôi phục dữ liệu dường như cục bộ của bạn được đặt trên heap. Chỉ riêng những quan sát này đã có đủ 10 hoặc 20 năm trước, khi phần cứng đơn giản hơn nhiều so với ngày nay.

Bản thân tôi không phải là một chuyên gia về phần cứng cũng như trình biên dịch, vì vậy, gần đúng thứ hai, đây là một số lý do cụ thể cho khoảng. yếu tố 100 được thấy trong Isabelle / HOL:

  • Mất hiệu suất cơ bản theo "xấp xỉ đầu tiên" ở trên.

  • Quản lý heap SML / NJ và GC có vấn đề nghiêm trọng để mở rộng hơn vài chục MB; Hiện tại, Isabelle sử dụng 100-1000 MB thường xuyên, đôi khi là vài GB.

  • Quá trình biên dịch SML / NJ rất chậm - điều này có thể hoàn toàn không liên quan (lưu ý rằng Isabelle / HOL thay thế biên dịch thời gian chạy và mã chạy).

  • SML / NJ thiếu đa luồng riêng - không hoàn toàn không liên quan, vì CPS được quảng cáo là "cuộn các luồng của riêng bạn trong không gian người dùng mà không có ngăn xếp riêng biệt".

Mối tương quan của heap và chủ đề cũng được thảo luận trong bài báo của Morriset / Tolmach PPOPP 1993 "Procs and Khóa: Nền tảng đa xử lý di động cho ML tiêu chuẩn của New Jersey" ( CiteSeerX ) Lưu ý: PDF tại CiteSeerX bị lạc hậu, các trang từ 10- 1 thay vì 1-10.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.