2011-09-01 54 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