2011-09-01 55 views
1

「塗鴉」是球拍文檔工具。下面的例子有問題。當N = 30時,塗鴉使用〜500M內存。在一份塗鴉文檔中看起來很難有300多個這樣的例子。Scribble使用太多的內存?

cat <<EOF 
#lang scribble/manual 
@(require scribble/eval) 

@title["hello world"] 
EOF 
N=30 
for((i=0;i<N;i++));do 
    cat <<EOF 
@(examples 
     (require racket/snip) 
     (require racket/class) 
     (make-object image-snip% "a.jpg")) 

EOF 
done 
) > x.scrbl 
scribble x.scrbl 

回答

4

我認爲examples每次創建一個新的評估器,這是相當昂貴的。如果可能的話,建立一個單一的評估爲您的整個文檔:

#lang scribble/manual 
@(require scribble/eval) 
@(define the-eval (make-base-eval)) 

@examples[#:eval the-eval 
(require racket/snip) 
(require racket/class) 
(make-object image-snip% "a.jpg") 
] 
... 
@examples[#:eval the-eval 
<more stuff> 
] 

應使用顯著較少的內存。

+0

'(貓<< EOF #lang塗抹/手動 @(亂寫要求/ EVAL) @(定義E(使鹼基EVAL)) @title [ 「世界你好」] @(interaction- EVAL#:EVALè (開始 (需要球拍/剪斷) (需要球拍/類))) EOF N = 1000 爲((I = 0; I x.scrbl'我改變它是這樣的。當N = 1000時,僅使用200M內存。問題已經解決了。謝謝!!! – wcy

+0

是的。我遵循你的回答。當N = 1000時,僅使用200M內存。 – wcy