[plt-scheme] A Scribble profiling project?
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.)