2011-12-12 4 views
14

repl에 큰 데이터 구조를 인쇄하는 큰 값을 평가할 때마다 점액이 매우 느려집니다. 계속해서 repl에 아무 내용이나 입력하면 repl에 나타나는 값이 지연되고 모든 clojure 코드에 대한 추가 평가가 느려집니다. 유일한 방법은 솔루션처럼 보이지 않는 repl을 다시 시작하는 것입니다.swank clojure로 점액을 일으키는 큰 repl 결과의 평가를 늦추는 방법?

큰 데이터 구조의 간단한 예제는 파일을 slurping 한 다음 인쇄하는 것입니다 (이것은 상당히 작은 파일 일 수도 있음).

이것은 Win7과 Ubuntu 모두에서 발생하는 것으로 보입니다.

이 문제를 방지하는 방법과 그 이유에 대해 알려 주시면 감사하겠습니다.

+0

흥미 롭다 - Windows에서 ClojureBlox를 사용하여 동일한 동작을 관찰했으며 실행 중에 인터럽트 방법을 희망하는 발가락을 두드리고있었습니다. 다음은 코드를 재현하는 코드입니다. https://gist.github.com/1454300 - 펄프 픽션의 시나리오를 처리합니다. – noahlz

답변

8

자주 발생하는이 문제에 직면했을 때 간단히 repl 버퍼를 지 웁니다. C-c M-o를 사용하거나 "REPL"메뉴 항목에서 "Clear Buffer"를 사용하여이 작업을 수행 할 수 있습니다. 이것은 repl를 다시 시작하지 않으며, 명령 히스토리 등은 영향을받지 않습니다.

+0

나는 그것이 왜 작동하는지 모르지만 그것은 나에게도 효과가있다. – georgek

+0

그것이 작동하는 이유는 이것이 repl 문제가 아니라 Emacs의 버퍼 크기와 관련된 문제이기 때문입니다. 이맥스는 지나치게 큰 버퍼를 다루는 데 좋지 않다. – vedang

+0

당신이 이것을 언급 한 후에, 당신의 권리, 더 적은 역사를 지우는 기술은 마지막 엔트리를 그냥 내뿜는 Cc Co입니다 ... 누군가가 실제로 좋은 이유가 있는지를보기 위해 조금 더 열어 두겠습니다. 이건 수정을 위해서. 나는 이맥스가 많은 텍스트를 처리 할 수 ​​없다는 것을 상상할 수 없다. – toofarsideways

2

얼마나 많은 정보가 REPL에서 인쇄되는지 제어 할 수있는 한 가지 방법은 클로저 자체에서 *print-length**print-level* 변수를 사용하는 것입니다.