Memory Scribble占用了太多内存?

Memory Scribble占用了太多内存?,memory,memory-management,racket,scribble,Memory,Memory Management,Racket,Scribble,“scribble”是racket文档工具。我对下面的例子有一个问题。当N=30时,scribble使用~500M内存。在一个潦草的文档中包含300多个这样的示例似乎非常困难 cat <<EOF #lang scribble/manual @(require scribble/eval) @title["hello world"] EOF N=30 for((i=0;i<N;i++));do cat <<EOF @(examples (

“scribble”是racket文档工具。我对下面的例子有一个问题。当N=30时,scribble使用~500M内存。在一个潦草的文档中包含300多个这样的示例似乎非常困难

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 

cat我认为
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>
]
#lang scribble/manual
@(需要涂鸦/评估)
@(定义评估(进行基本评估))
@示例[#:评估评估
(需要拍/剪)
(需要球拍/级别)
(使对象图像剪断%“a.jpg”)
]
...
@示例[#:评估评估
]

这应该使用更少的内存。

我认为
示例每次都会创建一个新的评估器,这相当昂贵。如果可能,为整个文档创建一个评估器:

#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>
]
#lang scribble/manual
@(需要涂鸦/评估)
@(定义评估(进行基本评估))
@示例[#:评估评估
(需要拍/剪)
(需要球拍/级别)
(使对象图像剪断%“a.jpg”)
]
...
@示例[#:评估评估
]

这应该使用更少的内存。

(cat是。我遵循您的答案。当N=1000时,仅使用200米内存。
(cat是。我遵循您的答案。当N=1000时,仅使用200米内存)。