[plt-scheme] A Scribble profiling project?

From: Danny Yoo (dyoo at cs.wpi.edu)
Date: Thu May 7 16:35:58 EDT 2009

Is anyone maintaining a list of PLT projects to work on?  If so, I
want to add another element to that list:

    * Profile Scribble to figure out why documentation generation is expensive.

>From a clean install of DrScheme (removing my .plt-scheme directory),
I ran a module that required:

    (planet lizorkin/sxml:2:1/sxml)

DrScheme chugged for several minutes.  As far as I can tell, the
majority of the time was spent generating Scribble documentation.  I'm
very glad that DrScheme 4.1.5 at least shows progress through the new
log panel; otherwise, I would have thought DrScheme had died.


I know this is a one-time cost thing, but this is so expensive that I
hesitate in using any new PLaneT packages; since PLaneT packages often
include other PLaneT packages, the resulting documentation-generating
cost is too expensive to use PLaneT casually.


>From a clean install, I'm seeing the following times on my Macbook Pro
(2.33 Ghz Intel Core 2 Due, 2GB memory):

###
mithril:swearwords dyoo$ time mzscheme swearwords.ss
require: unknown module: 'program
setup-plt: error: during Building docs for /Users/dyoo/Library/PLT
Scheme/planet/300/4.1.5/cache/cce/scheme.plt/4/1/scribblings/main.scrbl
setup-plt:   require: unknown module: 'program
WARNING: collected information for key multiple times: (index-entry
(mod-path "(planet schematics/sake)")); values: (("(planet
schematics/sake)") (#(struct:sized-element ... ...))
#<module-path-index-desc>) (("(planet schematics/sake)")
(#(struct:sized-element ... ...)) #<module-path-index-desc>)
WARNING: collected information for key multiple times: (mod-path
"(planet schematics/sake)"); values: #(#<path:/Users/dyoo/Library/PLT
Scheme/planet/300/4.1.5/cache/schematics/sake.plt/1/0/doc/sake/Build_files.html>
("Build files") #t (mod-path "(planet schematics/sake)"))
#(#<path:/Users/dyoo/Library/PLT
Scheme/planet/300/4.1.5/cache/schematics/sake.plt/1/0/doc/sake/The_Sake_API.html>
("The Sake API") #t (mod-path "(planet schematics/sake)"))
WARNING: collected information for key multiple times: (index-entry
(mod-path "(planet schematics/sake)")); values: (("(planet
schematics/sake)") (#(struct:sized-element ... ...))
#<module-path-index-desc>) (("(planet schematics/sake)")
(#(struct:sized-element ... ...)) #<module-path-index-desc>)
WARNING: collected information for key multiple times: (mod-path
"(planet schematics/sake)"); values: #(#<path:/Users/dyoo/Library/PLT
Scheme/planet/300/4.1.5/cache/schematics/sake.plt/1/0/doc/sake/Build_files.html>
("Build files") #t (mod-path "(planet schematics/sake)"))
#(#<path:/Users/dyoo/Library/PLT
Scheme/planet/300/4.1.5/cache/schematics/sake.plt/1/0/doc/sake/The_Sake_API.html>
("The Sake API") #t (mod-path "(planet schematics/sake)"))

real	7m53.216s
user	5m47.138s
sys	1m31.854s
###


To test, you can grab:

    http://git.hashcollision.org/projects/plt-misc/swearwords/swearwords.ss

wipe out the existing PLaneT cache, and then try to run the program.
(WARNING: the program has explicit content.)


Posted on the users mailing list.