2011-12-12 14 views
14

Bất cứ khi nào tôi đánh giá một giá trị lớn in một cơ sở dữ liệu lớn vào repl, chất nhờn trở nên rất chậm từ đó trở đi. Gõ bất cứ điều gì sau đó vào repl cho thấy một sự chậm trễ trong các giá trị xuất hiện trong repl và đánh giá thêm bất kỳ mã clojure là chậm. Điều duy nhất mà dường như làm việc là khởi động lại repl mà không có vẻ giống như một giải pháp.Làm thế nào để ngừng đánh giá kết quả repl lớn gây ra chất nhờn với clojure swank để làm chậm?

Một ví dụ đơn giản về cơ sở hạ tầng lớn là loại bỏ một tệp và sau đó in nó (điều này thậm chí có thể là một tệp khá nhỏ).

Điều này dường như xảy ra cả trong Win7 và Ubuntu.

Bất kỳ ý tưởng nào về cách ngăn chặn điều này và lý do tại sao điều đó xảy ra sẽ được đánh giá cao!

+0

Thú vị - Tôi đã quan sát hành vi tương tự bằng cách sử dụng ClojureBlox trên Windows và cũng đang khai thác ngón chân của tôi có nhu cầu cho một cách để làm gián đoạn trong khi nó đang thực thi. Đây là mã để tái tạo: https://gist.github.com/1454300 - xử lý kịch bản cho Pulp Fiction. – noahlz

Trả lời

8

Khi tôi gặp sự cố này (thường xảy ra), tôi chỉ xóa bộ đệm thay thế. Bạn có thể làm điều này với C-c M-o, hoặc bằng cách sử dụng "Xóa bộ đệm" trong mục trình đơn "REPL". Điều này không khởi động lại repl, và lịch sử lệnh và các loại tương tự không bị ảnh hưởng.

+0

Tôi không biết tại sao nó hoạt động, nhưng nó cũng làm việc cho tôi. – georgek

+0

Lý do nó hoạt động là đây không phải là vấn đề phát lại, mà là một vấn đề với kích thước của bộ đệm trong Emacs. Emacs không giỏi đối phó với các bộ đệm quá lớn. – vedang

+0

Sau khi bạn đề cập đến điều này tôi đã kiểm tra nó, quyền của bạn, một kỹ thuật thanh toán lịch sử ít hơn là Cc Co mà chỉ tuôn ra mục cuối cùng ... Tôi sẽ để câu hỏi mở ra lâu hơn một chút để xem có ai thực sự có lý do chính đáng không cho điều này hoặc sửa chữa. Tôi không thể tưởng tượng rằng "Emacs không thể xử lý nhiều văn bản" là một lý do tốt cho một trình soạn thảo văn bản ... – toofarsideways

2

Một cách bạn có thể kiểm soát lượng thông tin được in từ REPL là từ bản thân clojure bằng các biến số *print-length**print-level*.

Các vấn đề liên quan