Dudes and dudettes. Statprof works for profiling guile-vm. If you ask
me, that's pretty sweet.
Here's a profile of loading (oop goops). It's long because, well,
syncase... also I had to increase the sampling frequency because
otherwise the results were really unstable.
scheme@(guile-user)> (use-modules (statprof))
scheme@(guile-user)> (with-statprof #:hz 1000 (resolve-module '(oop goops)))
% cumulative self
time seconds seconds name
15.46 0.05 0.05 eqv?
10.31 0.14 0.04 write-bytecode
3.09 0.09 0.01 glil->assembly
3.09 0.01 0.01 memv
3.09 0.01 0.01 module-make-local-var!
2.06 0.17 0.01 for-each
2.06 0.09 0.01 map
2.06 0.02 0.01 %init-goops-builtins
2.06 0.01 0.01 record-accessor
2.06 0.01 0.01 lookup-transformer
2.06 0.01 0.01 record-predicate
2.06 0.01 0.01 comp
1.03 0.34 0.00 dynamic-wind
1.03 0.03 0.00 translate-1
1.03 0.02 0.00 add-method!
1.03 0.01 0.00 assoc-ref
1.03 0.01 0.00 make-glil-program
1.03 0.01 0.00 comp
1.03 0.00 0.00 syntmp-write-134
1.03 0.00 0.00 syntmp-fk-20
1.03 0.00 0.00 syntmp-fk-31
1.03 0.00 0.00 syntmp-write-byte-18
1.03 0.00 0.00 syntmp-fk-15
1.03 0.00 0.00 syntmp-fk-24
1.03 0.00 0.00 syntmp-write-byte-18
1.03 0.00 0.00 syntmp-fk-35
1.03 0.00 0.00 syntmp-fk-35
1.03 0.00 0.00 syntmp-fk-14
1.03 0.00 0.00 compute-closure-level
1.03 0.00 0.00 syntmp-fk-28
1.03 0.00 0.00 syntmp-fk-13
1.03 0.00 0.00 finish
1.03 0.00 0.00 syntmp-fk-30
1.03 0.00 0.00 comp
1.03 0.00 0.00 dump
1.03 0.00 0.00 syntmp-fk-25
1.03 0.00 0.00 syntmp-fk-18
1.03 0.00 0.00 syntmp-fk-34
1.03 0.00 0.00 syntmp-fk-33
1.03 0.00 0.00 lp
1.03 0.00 0.00 lp
1.03 0.00 0.00 syntmp-fk-13
1.03 0.00 0.00 syntmp-fk-20
1.03 0.00 0.00 syntmp-fk-35
1.03 0.00 0.00 loop
1.03 0.00 0.00 syntmp-fk-14
1.03 0.00 0.00 dump
1.03 0.00 0.00 syntmp-fk-20
1.03 0.00 0.00 syntmp-write-139
1.03 0.00 0.00 loop
1.03 0.00 0.00 syntmp-fk-13
1.03 0.00 0.00 dump
1.03 0.00 0.00 dump
1.03 0.00 0.00 syntmp-fk-34
1.03 0.00 0.00 syntmp-fk-30
1.03 0.00 0.00 close-binding
1.03 0.00 0.00 syntmp-fk-22
1.03 0.00 0.00 syntmp-fk-28
1.03 0.00 0.00 syntmp-fk-22
1.03 0.00 0.00 syntmp-fk-20
1.03 0.00 0.00 syntmp-fk-21
0.00 0.34 0.00 load-compiled/vm
0.00 0.30 0.00 save-module-excursion
0.00 0.30 0.00 load-file
0.00 0.30 0.00 compute-entry-with-cmethod
0.00 0.30 0.00 compile-method/vm
0.00 0.30 0.00 compile-fold
0.00 0.30 0.00 memoize-method!
0.00 0.29 0.00 make-instance
0.00 0.29 0.00 initialize
0.00 0.14 0.00 compile-bytecode
0.00 0.13 0.00 %goops-loaded
0.00 0.13 0.00 make-extended-generic
0.00 0.13 0.00 compute-cmethod
0.00 0.13 0.00 make-next-method
0.00 0.11 0.00 ensure-generic
0.00 0.09 0.00 compile-assembly
0.00 0.09 0.00 compile-asm
0.00 0.05 0.00 byte-length
0.00 0.04 0.00 call-with-ghil-bindings
0.00 0.03 0.00 compile-glil
0.00 0.03 0.00 codegen
0.00 0.02 0.00 lp
0.00 0.02 0.00 lp
0.00 0.01 0.00 lp
0.00 0.01 0.00 lp
0.00 0.01 0.00 comp
0.00 0.01 0.00 lp
0.00 0.01 0.00 lp
0.00 0.01 0.00 lp
0.00 0.01 0.00 lp
0.00 0.01 0.00 retrans
0.00 0.01 0.00 lp
0.00 0.01 0.00 syntmp-fk-810
0.00 0.01 0.00 retrans
0.00 0.01 0.00 comp
0.00 0.01 0.00 call-with-deferred-observers
0.00 0.01 0.00 lp
0.00 0.01 0.00 comp
0.00 0.01 0.00 retrans
0.00 0.01 0.00 make-glil-var
0.00 0.01 0.00 retrans
0.00 0.01 0.00 retrans
0.00 0.01 0.00 retrans
0.00 0.01 0.00 assoc-ref-or-acons
0.00 0.01 0.00 retrans
0.00 0.01 0.00 syntmp-fk-782
0.00 0.01 0.00 comp
0.00 0.00 0.00 loop
0.00 0.00 0.00 syntmp-fk-810
0.00 0.00 0.00 comp
0.00 0.00 0.00 syntmp-fk-782
0.00 0.00 0.00 push-call!
0.00 0.00 0.00 lp
0.00 0.00 0.00 retrans
0.00 0.00 0.00 lp
0.00 0.00 0.00 lp
0.00 0.00 0.00 retrans
0.00 0.00 0.00 lp
0.00 0.00 0.00 lp
0.00 0.00 0.00 comp-push
0.00 0.00 0.00 syntmp-fk-810
0.00 0.00 0.00 lp
0.00 0.00 0.00 retrans
0.00 0.00 0.00 lp
0.00 0.00 0.00 comp-push
0.00 0.00 0.00 push-call!
0.00 0.00 0.00 retrans
0.00 0.00 0.00 lp
0.00 0.00 0.00 comp
0.00 0.00 0.00 finish
0.00 0.00 0.00 retrans
0.00 0.00 0.00 retrans
0.00 0.00 0.00 comp
0.00 0.00 0.00 resolve-interface
0.00 0.00 0.00 retrans
0.00 0.00 0.00 module-export!
0.00 0.00 0.00 retrans
0.00 0.00 0.00 syntmp-fk-33
0.00 0.00 0.00 retrans
0.00 0.00 0.00 syntmp-fk-31
0.00 0.00 0.00 call-with-ghil-environment
0.00 0.00 0.00 syntmp-fk-782
0.00 0.00 0.00 retrans
0.00 0.00 0.00 syntmp-fk-26
0.00 0.00 0.00 retrans
0.00 0.00 0.00 syntmp-fk-30
0.00 0.00 0.00 retrans
0.00 0.00 0.00 syntmp-fk-782
0.00 0.00 0.00 lp
0.00 0.00 0.00 retrans
0.00 0.00 0.00 syntmp-fk-782
0.00 0.00 0.00 comp-push
0.00 0.00 0.00 retrans
0.00 0.00 0.00 finish
0.00 0.00 0.00 syntmp-fk-29
0.00 0.00 0.00 retrans
0.00 0.00 0.00 write-string
0.00 0.00 0.00 push-call!
0.00 0.00 0.00 syntmp-fk-782
0.00 0.00 0.00 write-char
0.00 0.00 0.00 syntmp-fk-810
0.00 0.00 0.00 syntmp-fk-810
0.00 0.00 0.00 lp
0.00 0.00 0.00 retrans
0.00 0.00 0.00 syntmp-fk-35
0.00 0.00 0.00 syntmp-fk-782
0.00 0.00 0.00 lp
0.00 0.00 0.00 lp
0.00 0.00 0.00 retrans
0.00 0.00 0.00 retrans
0.00 0.00 0.00 loop
0.00 0.00 0.00 retrans
0.00 0.00 0.00 comp-push
0.00 0.00 0.00 push-call!
0.00 0.00 0.00 syntmp-fk-23
0.00 0.00 0.00 comp-push
0.00 0.00 0.00 retrans
0.00 0.00 0.00 lp
0.00 0.00 0.00 retrans
0.00 0.00 0.00 retrans
0.00 0.00 0.00 retrans
0.00 0.00 0.00 comp-push
0.00 0.00 0.00 lp
0.00 0.00 0.00 push-call!
0.00 0.00 0.00 loop
0.00 0.00 0.00 for-each*
0.00 0.00 0.00 write-string
0.00 0.00 0.00 syntmp-fk-23
0.00 0.00 0.00 write-char
0.00 0.00 0.00 retrans
0.00 0.00 0.00 syntmp-fk-17
0.00 0.00 0.00 lp
0.00 0.00 0.00 comp-push
0.00 0.00 0.00 syntmp-fk-31
0.00 0.00 0.00 retrans
0.00 0.00 0.00 retrans
0.00 0.00 0.00 syntmp-fk-13
0.00 0.00 0.00 syntmp-fk-27
0.00 0.00 0.00 syntmp-fk-19
0.00 0.00 0.00 comp-push
0.00 0.00 0.00 retrans
---
Sample count: 97
Total time: 0.34 seconds (7/50 seconds in GC)
$1 = #<directory (oop goops) b7259830>
I'm not yet sure what to make of this. It seems like the compiler itself
can be sped up by a factor of two or so, which sounds nice. We'll see.
Anyway, glad to see that statprof works with the new vm.
Andy
--
http://wingolog.org/