1

"scribble" is the racket documentation tool. I have got a problem with the following example. When N=30, scribble uses ~500M memory. It seems very difficult to have more than 300 such examples in a single scribble document.

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 
Eli Barzilay
  • 29,301
  • 3
  • 67
  • 110
wcy
  • 875
  • 11
  • 12

1 Answers1

4

I think examples creates a new evaluator each time, which is rather expensive. If possible, create a single evaluator for your entire document:

#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>
]

That should use significantly less memory.

Ryan Culpepper
  • 10,495
  • 4
  • 31
  • 30
  • `(cat < x.scrbl` I change it like this. When N=1000, only 200M memory is used. The problem is solved. Thank you!!! – wcy Sep 01 '11 at 06:44
  • yes. I follow your answer. Only 200M memory is used when N=1000. – wcy Sep 01 '11 at 06:52