Elm Compiler chạy mãi mãi, máy tính cứ nóng lên


100

Tôi không chắc điều gì gây ra sự cố này, nhưng trong một dự án mà tôi đang xây dựng, trình biên dịch đang mất hàng giờ chỉ để biên dịch một mô-đun. Tổng kích thước của cơ sở mã của tôi là 352KB, nhưng không có mô-đun nào lớn hơn 10KB. Tôi đang sử dụng Native port, nhưng nó rất nhỏ; Tôi chỉ tìm nạp Date.now()với nó.

Có điều gì nổi tiếng khiến trình biên dịch cây du phải mất mãi mãi để biên dịch không? Tôi không có nhiều phụ thuộc, nhưng tôi đang sử dụng Html rất nhiều. Tôi thực sự sẽ đánh giá cao bất kỳ gợi ý nào về điều gì sẽ gây ra điều này.

Biên tập

Vì vậy, hóa ra các biểu thức chữ hoa lớn sẽ khiến trình tối ưu hóa mất nhiều thời gian, kể từ 0,16. Đây là cuộc thảo luận trên Elm-Discuss đưa ra vấn đề và ý chính của một trường hợp khó hiểu .

Tôi đoán là dài dòng và để giữ một củ cà rốt ở đó, tại sao trình biên dịch của cây du lại sử dụng con đường này để đối sánh chữ hoa chữ thường? Máy móc cơ bản đang diễn ra ở đây là gì? Tại sao trình biên dịch lại mất hơn một giờ để tối ưu hóa hơn 60 mẫu khớp trên một câu lệnh?


4
Tôi tò mò. Trình biên dịch Elm đang thực hiện loại tối ưu hóa nào mà phải mất hàng giờ để biên dịch một biểu thức trường hợp? Biểu thức trường hợp của bạn có vẻ không quá lớn (ít nhất là không đủ lớn cho máy tính). Điều này có nghĩa là trình biên dịch Elm có một thuật toán tối ưu hóa thực sự thực sự thực sự thực sự thực sự thực sự thực sự thực sự thực sự thực sự thực sự thực sự thực sự thực sự thực sự thực sự thực sự thực sự thực sự thực sự thực sự thực sự thực sự rất thực sự rất tệ. Ví dụ, hãy tưởng tượng sẽ mất bao lâu để biên dịch một biểu thức trường hợp với tất cả 721 Pokémon.
Aadit M Shah

4
Tôi đoán câu trả lời nằm ở đây , có lẽ bạn nên thử thêm haskellthẻ và xem liệu mọi người haskell có thể tiết lộ điều gì đó cho chúng tôi hay không.
Halfzebra

5
Tôi nghĩ bạn nên đặt một câu hỏi mới ở một địa điểm tốt hơn về việc sửa chữa các trường hợp và trả lời của riêng bạn bằng cách giải thích rằng các trường hợp được biết là chậm. Về lý do tại sao, mã liên quan có vẻ ở đây: github.com/elm-lang/elm-compiler/blob/master/src/Optimize Bài báo được trích dẫn của Scott & Ramsey mô tả cách kinh nghiệm "yếu tố phân nhánh nhỏ" chậm một cách thảm hại. Trong đoạn mã trên, heuristic được sử dụng như một tiebreaker khi các mối quan hệ mặc định nhỏ. Vì vậy, tôi cá rằng trong các ví dụ xấu của bạn, các ràng buộc mặc định nhỏ rất nhiều và chúng ta đã gặp phải trường hợp khủng khiếp. Ý kiến ​​của tôi: Elm không nên sử dụng SBF như một yếu tố, dừng hoàn toàn.
sclv

24
Bạn có thể vui lòng tự trả lời câu hỏi này để nó không xuất hiện trong danh sách chưa được trả lời nữa không?
Julian Leviston

5
Nó đã bao giờ thực sự hoàn thành việc biên dịch?
Worthy7

Câu trả lời:


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.