From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Jan Nieuwenhuizen Newsgroups: gmane.lisp.guile.devel Subject: Musings on performance, 2.2 and GOOPS (found factor 30) Date: Sun, 17 May 2015 13:08:31 +0200 Organization: AvatarAcademy.nl Message-ID: <877fs7xxzk.fsf@drakenvlieg.flower> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Trace: ger.gmane.org 1431860972 11432 80.91.229.3 (17 May 2015 11:09:32 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 17 May 2015 11:09:32 +0000 (UTC) Cc: Rutger van Beusekom To: guile-devel@gnu.org Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Sun May 17 13:09:18 2015 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1YtwRZ-0000WN-SL for guile-devel@m.gmane.org; Sun, 17 May 2015 13:09:18 +0200 Original-Received: from localhost ([::1]:36485 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YtwRY-00005u-UH for guile-devel@m.gmane.org; Sun, 17 May 2015 07:09:16 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:44929) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YtwRP-00005k-Ve for guile-devel@gnu.org; Sun, 17 May 2015 07:09:12 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YtwRL-0005Qx-2m for guile-devel@gnu.org; Sun, 17 May 2015 07:09:07 -0400 Original-Received: from lb1-smtp-cloud2.xs4all.net ([194.109.24.21]:53219) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YtwRK-0005Qj-M2 for guile-devel@gnu.org; Sun, 17 May 2015 07:09:03 -0400 Original-Received: from drakenvlieg.flower.peder.onsbrabantnet.nl ([62.140.132.197]) by smtp-cloud2.xs4all.net with ESMTP id Uz8Y1q0024FhfW601z8dTA; Sun, 17 May 2015 13:08:58 +0200 X-Url: http://AvatarAcademy.nl User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4 (gnu/linux) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 194.109.24.21 X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Original-Sender: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.devel:17720 Archived-At: Hi I have an application of about 10.000 LOC using Guile/GOOPS with performance problems. I found a way (thanks Ludo!) to run it with and without GOOPS, and gained a factor of 30 in performance. See details below. TL;DR 1) do not use multiple dispatch/define-method: factor 2 2) use plain lists (interface name (types ...) ...) instead of (define-class (types ...) ...): factor 5 (another factor= 3) 3) use guile-2.2 instead of guile-2.0.11: factor 30 (another factor 5) Amazing work!! (even faster than V8/nodejs) Although 3) just upgrading guile and gain a factor of 5 sounds very nice, it wasn't so easy for me to collect that factor 5. Using guile-2.2 with GOOPS still in place does not help much (bit slower when using multiple dispatch/define-method, bit faster whithout multiple dispatch). So, I had to do 1) and 2) to find and collect 3). I am considering to use GOOPS for development and run without GOOPS in production (if the extensive regression test still passes :-) (Prototyping in Guile and) rewriting it in C++11 would easily give us another factor 10/20... :-( Suggestions much appreciated. Greetings, Jan The `gaiag' script runs the version with GOOPS, the `g' script uses plain lists. $ guile --version guile (GNU Guile) 2.0.11 $ guile-2.2 --version guile (GNU Guile) 2.1.0.1098-5ded Using define-method; multiple dispatch $ time GUILE=3Dguile ./gaiag -l resolve Handle.dzn >/dev/null real 0m8.128s user 0m8.100s sys 0m0.004s $ time GUILE=3Dguile-2.2 ./gaiag -l resolve Handle.dzn >/dev/null real 0m9.738s user 0m9.784s sys 0m0.048s It seems that multiple dispatch is a bit slower on 2.2 ... I rewrote all usage of define-method (define-method (foo (o ) o)) (define-method (foo (o ) (mangle o))) using match (define (foo o) (match o ( (mangle o)) (_ o))) and rerouted make from (define-class ()) (define-class () (name :accessor .name :init-value #f :init-keyword :name)) (define-class ()) (define-class () (types :accessor .types :init-form (make ) :init-keyword :type= s) (events :accessor .events :init-form (make ) :init-keyword :e= vents) (behaviour :accessor .behaviour :init-value #f :init-keyword :behavio= ur)) (make ...) to the non-hygienic (thanks Ludo! ... hygiene-clue-bat appreciated) (define-syntax make (lambda (s) (syntax-case s () ((_ type args ...) (with-syntax ((m (datum->syntax #'type (symbol-append 'make- (syntax->dat= um #'type))))) #'(m args ...)))))) (define (make- . args) (let-keywords args #f ((name #f) (types (make )) (events (make )) (behaviour (make ))) (cons (list name types events behaviour)))) and (define 'interface) and used SED (ugh) to change (match o (($ name types) (bar types))) into (match o (('interface name types _ ___) (bar types))) I could use records instead of lists + no SED needed, nice and unchanged record matchers ($ first-element-only) match ('foo first-element-only) no match! + more type-safety? - rewriting the tree is so much nicer with lists than records/goops (match o (('interface body ...) (bar interface)) ((h t ...) (map foo o)) (_ (foo o))) - printing is simply pretty-print - much work, what's the performance impact? - not used much by schemers? $ time GUILE=3Dguile ./gaiag -l resolve Handle.dzn >/dev/null real 0m4.550s user 0m4.536s sys 0m0.012s $ time GUILE=3Dguile ./g -l resolve Handle.dzn >/dev/null real 0m1.672s user 0m1.660s sys 0m0.004s $ time GUILE=3Dguile-2.2 ./gaiag -l resolve Handle.dzn >/dev/null real 0m3.942s user 0m4.048s sys 0m0.008s $ time GUILE=3Dguile-2.2 ./g -l resolve Handle.dzn >/dev/null real 0m0.313s user 0m0.316s sys 0m0.004s scheme@(gaiag resolve)> ,profile (ast:resolve (read-ast "Handle.dzn")) < (ast:resolve (read-ast "Handle.dzn")) % cumulative self=20=20=20=20=20=20=20=20=20=20=20=20=20 time seconds seconds procedure 4.86 23.43 0.41 language/cps/dfg.scm:647:8:visit-term 3.24 2.40 0.27 srfi/srfi-1.scm:458:2:fold 2.43 1.72 0.20 language/cps/dfg.scm:603:6:cont-folder 2.23 13.28 0.19 language/cps/renumber.scm:111:2:visit 2.23 0.19 0.19 list? 2.02 1.15 0.17 language/cps.scm:571:5:cont-folder 2.02 1.05 0.17 language/cps/slot-allocation.scm:233:0:allocate= -slots 2.02 0.17 0.17 language/cps/dfg.scm:789:0:lookup-cont 2.02 0.17 0.17 %after-gc-thunk 1.82 0.91 0.15 language/cps/types.scm:1100:0:infer-types* 1.82 0.19 0.15 language/cps/dfg.scm:670:8:visit-exp 1.42 0.12 0.12 language/cps/dfg.scm:820:0:find-call 1.21 26.01 0.10 language/cps/dfg.scm:603:6:term-folder 1.21 20.59 0.10 language/cps/renumber.scm:277:2:visit-cont 1.21 3.63 0.10 language/cps/dce.scm:137:4:visit-fun 1.21 1.52 0.10 language/cps/compile-bytecode.scm:93:0:compile-= fun 1.21 0.47 0.10 language/cps/intmap.scm:338:2:intersect 1.21 0.14 0.10 language/cps/dce.scm:190:18:lp 1.21 0.12 0.10 language/cps/dfg.scm:639:8:visit-cont 1.21 0.10 0.10 procedure? 1.01 186.28 0.08 srfi/srfi-1.scm:590:5:map1 1.01 15.66 0.08 language/cps/dce.scm:305:7:visit-term 1.01 10.91 0.08 srfi/srfi-1.scm:634:2:for-each 1.01 0.24 0.08 language/cps/renumber.scm:309:2:visit-exp 0.81 24.14 0.07 language/cps/renumber.scm:298:2:visit-term 0.81 13.11 0.07 language/cps.scm:571:5:term-folder 0.81 5.88 0.07 language/cps/arities.scm:39:4:visit-term 0.81 5.49 0.07 language/cps/simplify.scm:124:4:visit-term 0.81 3.51 0.07 language/tree-il.scm:418:2:foldts 0.81 3.50 0.07 srfi/srfi-1.scm:687:0:filter-map 0.81 0.24 0.07 language/cps/intmap.scm:105:0:intmap-add 0.81 0.17 0.07 srfi/srfi-1.scm:586:2:map 0.81 0.14 0.07 set-source-properties! 0.81 0.12 0.07 hashq-ref 0.81 0.08 0.07 language/cps/intmap.scm:61:0:new-branch 0.81 0.08 0.07 ice-9/boot-9.scm:246:2:map 0.81 0.07 0.07 language/cps/closure-conversion.scm:246:20 0.81 0.07 0.07 ice-9/psyntax.scm:766:10:search 0.81 0.07 0.07 length 0.61 16.99 0.05 language/cps/renumber.scm:268:2:visit-conts 0.61 4.88 0.05 language/cps/renumber.scm:220:10:visit-term 0.61 0.25 0.05 language/cps/intmap.scm:106:2:adjoin 0.61 0.24 0.05 language/cps/renumber.scm:185:10:visit-cont 0.61 0.12 0.05 language/cps/intset.scm:179:2:remove 0.61 0.08 0.05 language/cps/intset.scm:240:2:visit-node 0.61 0.08 0.05 language/cps/dce.scm:54:0:compute-defs 0.61 0.08 0.05 language/cps/types.scm:1166:4:type-entry-satura= ting-union 0.61 0.07 0.05 language/cps/intset.scm:137:0:intset-add 0.61 0.07 0.05 language/cps/slot-allocation.scm:296:4:allocate! 0.61 0.05 0.05 length+ 0.61 0.05 0.05 ice-9/vlist.scm:449:0:vhash-cons 0.61 0.05 0.05 max 0.40 11.15 0.03 language/cps/dce.scm:268:7:visit-cont* 0.40 6.94 0.03 language/cps/closure-conversion.scm:414:4:visit= -cont 0.40 4.56 0.03 language/cps/simplify.scm:112:4:visit-cont 0.40 3.67 0.03 language/cps/reify-primitives.scm:114:2:visit-c= ont 0.40 3.19 0.03 language/cps/simplify.scm:166:4:visit-term 0.40 2.92 0.03 language/tree-il.scm:425:2:lp 0.40 2.82 0.03 language/cps/type-fold.scm:392:9:visit-cont 0.40 2.60 0.03 language/cps.scm:596:31:term-folder 0.40 2.40 0.03 language/cps.scm:610:2:term-folder 0.40 1.52 0.03 language/cps/dce.scm:122:30:term-folder 0.40 1.47 0.03 language/cps/renumber.scm:163:10:visit-term 0.40 1.44 0.03 language/cps/dfg.scm:606:0:compute-dfg 0.40 1.22 0.03 language/tree-il/compile-cps.scm:206:0:convert 0.40 0.37 0.03 language/cps/dfg.scm:439:0:compute-live-variabl= es 0.40 0.34 0.03 language/cps/types.scm:1191:4:propagate-types! 0.40 0.32 0.03 language/cps/prune-top-level-scopes.scm:36:4:vi= sit-cont 0.40 0.15 0.03 language/cps/dfg.scm:604:6:cont-folder 0.40 0.12 0.03 system/vm/linker.scm:322:0:add-symbols 0.40 0.12 0.03 language/cps/dfg.scm:604:6 0.40 0.10 0.03 srfi/srfi-1.scm:865:0:list-index 0.40 0.10 0.03 language/cps/renumber.scm:138:10:visit-cont 0.40 0.08 0.03 language/cps.scm:596:31:cont-folder 0.40 0.07 0.03 ice-9/boot-9.scm:351:0:or-map 0.40 0.05 0.03 hashq 0.40 0.05 0.03 language/cps/intset.scm:267:0:intset-union 0.40 0.03 0.03 language/cps/intmap.scm:175:0:intmap-ref 0.40 0.03 0.03 gensym 0.40 0.03 0.03 ice-9/psyntax.scm:2883:8:match* 0.40 0.03 0.03 language/cps/types.scm:241:0:type-entry<=3D? 0.40 0.03 0.03 source-properties 0.40 0.03 0.03 vector-move-left! 0.40 0.03 0.03 language/cps/dfg.scm:338:4:common-idom 0.40 0.03 0.03 language/cps.scm:615:0:visit-cont-successors 0.40 0.03 0.03 language/cps/intset.scm:114:0:make-intset/prune 0.40 0.03 0.03 make-struct 0.40 0.03 0.03 memq 0.40 0.03 0.03 force 0.40 0.03 0.03 null? 0.40 0.03 0.03 hashq-set! 0.20 34.34 0.02 ice-9/boot-9.scm:251:5:map1 0.20 23.78 0.02 module/gaiag/resolve.scm:152:0 0.20 8.14 0.02 oop/goops/dispatch.scm:204:4 0.20 7.74 0.02 module/gaiag/gom/ast.scm:68:0:ast->gom-- 0.20 6.45 0.02 language/cps/renumber.scm:37:4:visit 0.20 6.25 0.02 language/cps/closure-conversion.scm:425:4:visit= -term 0.20 5.19 0.02 language/cps/simplify.scm:223:4:visit-term 0.20 4.54 0.02 language/cps/simplify.scm:208:4:visit-cont 0.20 3.80 0.02 language/cps/reify-primitives.scm:125:2:visit-t= erm 0.20 3.38 0.02 language/cps/arities.scm:182:4:visit-cont 0.20 2.65 0.02 language/tree-il/fix-letrec.scm:32:2:foldts 0.20 2.58 0.02 language/cps/simplify.scm:294:4:visit-term 0.20 2.53 0.02 language/cps/simplify.scm:304:6:visit-dom-conts* 0.20 2.33 0.02 language/cps/prune-top-level-scopes.scm:51:4:vi= sit-term 0.20 1.47 0.02 oop/goops.scm:1613:0 0.20 1.32 0.02 language/cps/constructors.scm:33:2:visit-cont 0.20 0.52 0.02 language/cps/simplify.scm:48:4:visit-term 0.20 0.42 0.02 language/cps/simplify.scm:155:4:visit-cont 0.20 0.35 0.02 ice-9/psyntax.scm:1268:6:syntax-type 0.20 0.34 0.02 language/tree-il/debug.scm:39:2:visit 0.20 0.32 0.02 language/cps/intmap.scm:291:2:intersect-branche= s/fresh 0.20 0.32 0.02 language/cps/closure-conversion.scm:531:0:conve= rt-closures 0.20 0.30 0.02 language/tree-il/compile-cps.scm:606:4:foldts 0.20 0.29 0.02 language/cps/intmap.scm:289:0:intmap-intersect 0.20 0.27 0.02 language/cps/arities.scm:35:0:fix-arities* 0.20 0.25 0.02 cdr 0.20 0.25 0.02 ice-9/psyntax.scm:2281:21:expand-let 0.20 0.24 0.02 language/cps.scm:610:2:cont-folder 0.20 0.15 0.02 language/cps/self-references.scm:57:2:visit-exp 0.20 0.12 0.02 language/cps/types.scm:459:0 0.20 0.12 0.02 language/cps/intmap.scm:63:0:clone-branch-and-s= et 0.20 0.10 0.02 language/cps/dfg.scm:831:0:find-expression 0.20 0.10 0.02 language/cps/intset.scm:178:0:intset-remove 0.20 0.10 0.02 language/tree-il.scm:418:2:fold-values 0.20 0.08 0.02 language/cps/dfg.scm:263:0:analyze-reverse-cont= rol-flow 0.20 0.08 0.02 ice-9/psyntax.scm:761:6:id-var-name 0.20 0.08 0.02 ice-9/psyntax.scm:1476:10:rebuild-macro-output 0.20 0.07 0.02 language/tree-il/analyze.scm:543:4 0.20 0.07 0.02 language/cps/dfg.scm:841:0:find-constant-value 0.20 0.07 0.02 language/cps/dfg.scm:332:0:compute-idoms 0.20 0.05 0.02 language/cps/dfg.scm:346:4:compute-idom 0.20 0.05 0.02 language/cps/intset.scm:92:0:clone-branch-and-s= et 0.20 0.05 0.02 language/tree-il/fix-letrec.scm:58:18 0.20 0.05 0.02 language/cps.scm:597:32 0.20 0.05 0.02 language/cps/types.scm:230:0:var-type-entry 0.20 0.05 0.02 language/tree-il/fix-letrec.scm:216:5 0.20 0.03 0.02 language/cps/slot-allocation.scm:230:0:dead-aft= er-use? 0.20 0.03 0.02 ice-9/psyntax.scm:993:6:bound-id-member? 0.20 0.03 0.02 language/cps/dfg.scm:383:0:compute-dom-edges 0.20 0.03 0.02 language/cps/simplify.scm:239:4:visit-exp 0.20 0.03 0.02 language/cps/slot-allocation.scm:178:0:solve-pa= rallel-move 0.20 0.03 0.02 system/vm/assembler.scm:1412:0:link-constants 0.20 0.03 0.02 oop/goops/dispatch.scm:118:0:compute-dispatch-p= rocedure 0.20 0.03 0.02 car 0.20 0.02 0.02 language/cps/intset.scm:90:0:new-branch 0.20 0.02 0.02 macro? 0.20 0.02 0.02 bytevector-u64-set! 0.20 0.02 0.02 language/cps/compile-bytecode.scm:160:25 0.20 0.02 0.02 language/cps/slot-allocation.scm:115:0:find-fir= st-zero 0.20 0.02 0.02 system/vm/linker.scm:436:20 0.20 0.02 0.02 language/cps/intset.scm:524:8:lp 0.20 0.02 0.02 ice-9/psyntax.scm:958:6:bound-id=3D? 0.20 0.02 0.02 assq-ref 0.20 0.02 0.02 anon #x7f8f710a28e4 0.20 0.02 0.02 language/tree-il/compile-cps.scm:585:23 0.20 0.02 0.02 min 0.20 0.02 0.02 srfi/srfi-1.scm:987:23 0.20 0.02 0.02 language/cps/dfg.scm:861:3 0.20 0.02 0.02 language/cps.scm:216:0:fresh-var 0.20 0.02 0.02 bitvector-set! 0.20 0.02 0.02 language/cps/dfg.scm:895:0:continuation-scope-c= ontains? 0.20 0.02 0.02 language/cps/intmap.scm:68:0:branch-empty? 0.20 0.02 0.02 language/tree-il/primitives.scm:282:3 0.20 0.02 0.02 language/cps/intmap.scm:79:0:add-level 0.20 0.02 0.02 oop/goops/dispatch.scm:218:2:map-until 0.20 0.02 0.02 language/cps/intmap.scm:86:0:make-intmap/prune 0.20 0.02 0.02 language/tree-il/analyze.scm:543:4 0.20 0.02 0.02 symbol->keyword 0.20 0.02 0.02 language/cps/slot-allocation.scm:139:0:lookup-s= lot 0.20 0.02 0.02 language/cps/types.scm:266:0:adjoin-var 0.20 0.02 0.02 reverse 0.20 0.02 0.02 bitvector-ref 0.20 0.02 0.02 ice-9/psyntax.scm:2462:19 0.20 0.02 0.02 ice-9/vlist.scm:254:0:vlist-fold 0.20 0.02 0.02 system/vm/linker.scm:206:0:segment-kind 0.20 0.02 0.02 language/cps/dfg.scm:814:0:find-defining-term 0.20 0.02 0.02 language/cps/type-fold.scm:285:22:term-folder 0.20 0.02 0.02 language/cps/dfg.scm:428:0:dfa-var-sym 0.20 0.02 0.02 system/vm/linker.scm:176:0:string-table-intern! 0.20 0.02 0.02 language/tree-il/compile-cps.scm:226:2:convert-= args 0.20 0.02 0.02 ice-9/psyntax.scm:567:6:extend-var-env 0.20 0.02 0.02 logbit? 0.20 0.02 0.02 language/cps/intmap.scm:212:2:union-branches/fr= esh 0.20 0.02 0.02 language/cps/slot-allocation.scm:358:31 0.20 0.02 0.02 system/vm/linker.scm:218:0:count-segments 0.20 0.02 0.02 language/cps/dfg.scm:798:0:lookup-successors 0.20 0.02 0.02 system/vm/linker.scm:165:0:make-string-table 0.20 0.02 0.02 read 0.20 0.02 0.02 system/vm/elf.scm:596:0:make-elf-section* 0.20 0.02 0.02 make-bitvector 0.20 0.02 0.02 anon #x7f8f71098224 0.20 0.02 0.02 language/cps/type-fold.scm:79:0 0.20 0.02 0.02 language/cps/simplify.scm:202:4:subst 0.20 0.02 0.02 language/cps/dce.scm:113:4:mark-live! 0.20 0.02 0.02 not 0.20 0.02 0.02 language/cps/closure-conversion.scm:116:4:visit= -exp 0.20 0.02 0.02 language/tree-il/debug.scm:34:2:add-env 0.20 0.02 0.02 language/tree-il.scm:563:18 0.20 0.02 0.02 language/cps/intset.scm:97:0:branch-empty? 0.20 0.02 0.02 exact-integer? 0.00 36.33 0.00 module/gaiag/resolve.scm:117:0 0.00 11.22 0.00 ice-9/boot-9.scm:284:2:for-each 0.00 10.17 0.00 module/gaiag/gom/map.scm:42:0 0.00 10.17 0.00 module/gaiag/gom/map.scm:30:0 0.00 9.78 0.00 module/gaiag/resolve.scm:431:7:loop 0.00 8.95 0.00 module/gaiag/gom/ast.scm:65:0:ast->gom- 0.00 8.78 0.00 concatenate 0.00 8.09 0.00 system/base/target.scm:51:0:with-target 0.00 8.09 0.00 system/base/compile.scm:237:0:compile 0.00 8.09 0.00 oop/goops/dispatch.scm:185:6 0.00 8.07 0.00 system/base/compile.scm:177:0:compile-fold 0.00 7.45 0.00 anon #x7f8f710a28c4 0.00 7.43 0.00 language/cps/reify-primitives.scm:75:11 0.00 7.26 0.00 language/cps/compile-bytecode.scm:489:0:compile= -bytecode 0.00 7.09 0.00 module/gaiag/resolve.scm:59:0 0.00 6.18 0.00 module/gaiag/gom/map.scm:56:0 0.00 4.16 0.00 language/cps/compile-bytecode.scm:58:0:optimize 0.00 3.34 0.00 language/cps/dfg.scm:604:6:term-folder 0.00 2.79 0.00 language/cps/self-references.scm:34:2:visit-cont 0.00 2.72 0.00 language/cps/type-fold.scm:400:9:visit-term 0.00 2.58 0.00 language/cps/simplify.scm:281:4:visit-cont 0.00 2.57 0.00 language/cps/self-references.scm:46:2:visit-term 0.00 2.38 0.00 module/gaiag/gom/map.scm:54:0 0.00 2.28 0.00 language/cps/dce.scm:356:0:eliminate-dead-code 0.00 2.15 0.00 language/cps/dfg.scm:695:8:visit-clause 0.00 1.84 0.00 language/cps/closure-conversion.scm:96:15 0.00 1.50 0.00 language/cps/dce.scm:108:0:compute-live-code 0.00 1.22 0.00 module/gaiag/gom/map.scm:90:0 0.00 1.20 0.00 language/cps/constructors.scm:44:2:visit-term 0.00 1.15 0.00 language/cps/renumber.scm:346:0:renumber 0.00 1.13 0.00 language/cps/simplify.scm:332:0:simplify 0.00 0.91 0.00 language/cps/types.scm:1358:0:infer-types 0.00 0.78 0.00 ice-9/psyntax.scm:1559:10:parse 0.00 0.76 0.00 language/cps/dce.scm:82:0:elide-type-checks! 0.00 0.74 0.00 language/cps/dce.scm:261:2:visit-fun 0.00 0.74 0.00 language/cps/renumber.scm:334:2:visit-fun 0.00 0.73 0.00 language/tree-il/compile-cps.scm:132:7:fold-req 0.00 0.71 0.00 language/cps/renumber.scm:122:0:compute-new-lab= els-and-vars 0.00 0.68 0.00 language/cps/type-fold.scm:354:4:visit-term 0.00 0.66 0.00 language/cps/type-fold.scm:385:0:fold-constants* 0.00 0.54 0.00 ice-9/psyntax.scm:1889:35 0.00 0.51 0.00 find 0.00 0.49 0.00 module/gaiag/resolve.scm:509:0 0.00 0.49 0.00 language/cps/simplify.scm:200:0:beta-reduce 0.00 0.47 0.00 language/tree-il/compile-cps.scm:724:0:compile-= cps 0.00 0.44 0.00 language/cps/renumber.scm:253:0:apply-renumberi= ng 0.00 0.44 0.00 language/cps/type-fold.scm:442:0:type-fold 0.00 0.44 0.00 language/cps/type-fold.scm:434:9:visit-fun 0.00 0.42 0.00 language/cps/renumber.scm:183:8:compute-names-i= n-fun 0.00 0.37 0.00 language/cps/simplify.scm:148:0:compute-beta-re= ductions 0.00 0.35 0.00 language/cps/prune-bailouts.scm:49:2:visit-cont 0.00 0.34 0.00 language/cps/prune-bailouts.scm:61:2:visit-term 0.00 0.34 0.00 ice-9/psyntax.scm:1042:6:expand-top-sequence 0.00 0.34 0.00 ice-9/boot-9.scm:2608:0:save-module-excursion 0.00 0.34 0.00 language/scheme/compile-tree-il.scm:29:3 0.00 0.32 0.00 language/cps/closure-conversion.scm:76:4:visit-= cont 0.00 0.32 0.00 ice-9/boot-9.scm:1057:2 0.00 0.30 0.00 ice-9/psyntax.scm:2195:28:lp 0.00 0.30 0.00 language/cps/simplify.scm:142:4:visit-fun 0.00 0.29 0.00 ice-9/psyntax.scm:2234:24 0.00 0.27 0.00 language/cps/simplify.scm:272:4:visit-fun-cont 0.00 0.25 0.00 language/cps/reify-primitives.scm:75:11 0.00 0.25 0.00 append 0.00 0.24 0.00 language/cps/simplify.scm:259:4:visit-fun 0.00 0.24 0.00 language/cps/dfg.scm:450:4:fold 0.00 0.22 0.00 language/cps/simplify.scm:268:0:redominate 0.00 0.20 0.00 language/cps/closure-conversion.scm:239:4:conve= rt-free-var 0.00 0.20 0.00 system/vm/linker.scm:673:0:link-elf 0.00 0.20 0.00 language/cps/arities.scm:196:0:fix-arities 0.00 0.20 0.00 language/cps/simplify.scm:70:0:eta-reduce 0.00 0.19 0.00 system/vm/linker.scm:602:0:allocate-elf 0.00 0.19 0.00 language/cps/type-fold.scm:272:0:fold-and-reduce 0.00 0.17 0.00 language/tree-il/compile-cps.scm:633:0:optimize= -tree-il 0.00 0.17 0.00 language/tree-il/analyze.scm:532:0:analyze-tree 0.00 0.15 0.00 language/cps/dfg.scm:558:0:compute-label-and-va= r-ranges 0.00 0.15 0.00 language/cps/reify-primitives.scm:109:2:visit-c= lause 0.00 0.15 0.00 language/cps/reify-primitives.scm:169:0:reify-p= rimitives 0.00 0.14 0.00 module/gaiag/gom/util.scm:388:0 0.00 0.14 0.00 language/cps/elide-values.scm:107:0:elide-values 0.00 0.14 0.00 language/cps/dfg.scm:604:6:clause-folder 0.00 0.14 0.00 system/vm/linker.scm:336:0:allocate-segment 0.00 0.12 0.00 language/tree-il/compile-cps.scm:266:7:convert-= clauses 0.00 0.12 0.00 module/gaiag/gom/util.scm:325:0 0.00 0.12 0.00 language/cps/specialize-primcalls.scm:33:0:spec= ialize-primcalls 0.00 0.12 0.00 language/cps.scm:568:0:compute-max-label-and-var 0.00 0.12 0.00 language/cps/reify-primitives.scm:108:0:reify-p= rimitives/1 0.00 0.12 0.00 language/tree-il/compile-cps.scm:512:5:lp 0.00 0.12 0.00 module/gaiag/resolve.scm:483:0 0.00 0.12 0.00 ice-9/psyntax.scm:871:4:resolve-identifier 0.00 0.10 0.00 language/cps.scm:596:31:clause-folder 0.00 0.10 0.00 language/cps/closure-conversion.scm:93:4:visit-= term 0.00 0.08 0.00 module/gaiag/resolve.scm:182:2:type? 0.00 0.08 0.00 language/tree-il/compile-cps.scm:609:0:cps-conv= ert/thunk 0.00 0.07 0.00 language/cps/dfg.scm:99:0:build-cont-table 0.00 0.07 0.00 language/cps/simplify.scm:287:4:visit-exp 0.00 0.07 0.00 system/vm/assembler.scm:2348:0:link-objects 0.00 0.07 0.00 language/tree-il/fix-letrec.scm:32:2:fold-values 0.00 0.07 0.00 language/tree-il/optimize.scm:30:0:optimize 0.00 0.07 0.00 language/tree-il/fix-letrec.scm:54:0:partition-= vars 0.00 0.07 0.00 language/tree-il/fix-letrec.scm:213:0:fix-letrec 0.00 0.07 0.00 system/vm/assembler.scm:2379:0:link-assembly 0.00 0.05 0.00 module/gaiag/gom/util.scm:431:0 0.00 0.05 0.00 language/cps/renumber.scm:265:2:must-visit-cont 0.00 0.05 0.00 module/gaiag/gom/util.scm:346:0 0.00 0.05 0.00 language/cps/types.scm:1145:4:adjoin-vars 0.00 0.05 0.00 language/cps/closure-conversion.scm:45:0:analyz= e-closures 0.00 0.05 0.00 module/gaiag/gom/util.scm:363:0 0.00 0.05 0.00 language/cps/prune-top-level-scopes.scm:91:0:pr= une-top-level-scopes 0.00 0.05 0.00 language/cps/constructors.scm:103:0:inline-cons= tructors 0.00 0.05 0.00 module/gaiag/gom/util.scm:328:0 0.00 0.05 0.00 language/cps/prune-top-level-scopes.scm:30:0:co= mpute-referenced-scopes 0.00 0.05 0.00 language/cps/intset.scm:226:0:intset-next 0.00 0.05 0.00 language/cps/prune-bailouts.scm:48:0:prune-bail= outs* 0.00 0.05 0.00 oop/goops/dispatch.scm:238:0:cache-miss 0.00 0.05 0.00 language/cps/simplify.scm:38:4:visit-cont 0.00 0.05 0.00 oop/goops/dispatch.scm:267:0:memoize-method! 0.00 0.05 0.00 module/gaiag/gom/util.scm:331:0 0.00 0.03 0.00 ice-9/psyntax.scm:1474:6:expand-macro 0.00 0.03 0.00 language/tree-il/compile-cps.scm:208:2:convert-= arg 0.00 0.03 0.00 module/gaiag/resolve.scm:167:2:event-or-functio= n? 0.00 0.03 0.00 module/gaiag/gom/util.scm:337:0 0.00 0.03 0.00 language/cps/prune-bailouts.scm:100:0:prune-bai= louts 0.00 0.03 0.00 language/cps/contification.scm:404:0:contify 0.00 0.03 0.00 ice-9/psyntax.scm:2206:26 0.00 0.03 0.00 language/cps/dfg.scm:177:0:find-prompts 0.00 0.03 0.00 language/cps/types.scm:235:0:var-min 0.00 0.03 0.00 language/cps/slot-allocation.scm:613:16 0.00 0.03 0.00 language/cps/effects-analysis.scm:454:0:compute= -effects 0.00 0.03 0.00 language/cps/prune-bailouts.scm:89:2:visit-fun 0.00 0.03 0.00 system/vm/assembler.scm:2024:0:link-debug 0.00 0.03 0.00 language/tree-il/compile-cps.scm:559:0:build-su= bst 0.00 0.03 0.00 ice-9/psyntax.scm:1363:12 0.00 0.03 0.00 ice-9/psyntax.scm:986:6:distinct-bound-ids? 0.00 0.03 0.00 language/cps/contification.scm:41:0:compute-con= tification 0.00 0.03 0.00 ice-9/psyntax.scm:1438:28 0.00 0.03 0.00 language/cps/slot-allocation.scm:284:4:recomput= e-live-slots 0.00 0.03 0.00 module/gaiag/resolve.scm:164:2:var? 0.00 0.03 0.00 language/cps/dce.scm:122:30:clause-folder 0.00 0.03 0.00 language/cps/dfg.scm:230:0:visit-prompt-control= -flow 0.00 0.03 0.00 module/gaiag/gom/util.scm:385:0 0.00 0.03 0.00 language/cps/dfg.scm:201:0:find-prompt-bodies 0.00 0.03 0.00 ice-9/psyntax.scm:1725:8:check 0.00 0.03 0.00 system/vm/assembler.scm:1165:0:make-object 0.00 0.03 0.00 language/cps/slot-allocation.scm:326:4:parallel= -move 0.00 0.03 0.00 language/cps/dce.scm:273:34 0.00 0.03 0.00 language/cps/constructors.scm:96:2:visit-fun 0.00 0.03 0.00 srfi/srfi-1.scm:947:0:lset-adjoin 0.00 0.03 0.00 system/vm/linker.scm:453:0:add-elf-objects 0.00 0.03 0.00 module/gaiag/gom/util.scm:395:8 0.00 0.02 0.00 language/cps/intmap.scm:210:0:intmap-union 0.00 0.02 0.00 module/gaiag/gom/util.scm:469:12 0.00 0.02 0.00 language/cps/dfg.scm:834:0:find-defining-expres= sion 0.00 0.02 0.00 system/vm/linker.scm:581:0:record-special-segme= nts 0.00 0.02 0.00 system/vm/linker.scm:443:10 0.00 0.02 0.00 module/gaiag/gom/util.scm:398:8 0.00 0.02 0.00 language/cps/type-fold.scm:285:22:clause-folder 0.00 0.02 0.00 %initialize-object 0.00 0.02 0.00 module/gaiag/gom/util.scm:461:12 0.00 0.02 0.00 module/gaiag/gom/util.scm:458:8 0.00 0.02 0.00 module/gaiag/gom/util.scm:467:0 0.00 0.02 0.00 ice-9/psyntax.scm:267:4 0.00 0.02 0.00 module/gaiag/gom/util.scm:411:0 0.00 0.02 0.00 module/gaiag/resolve.scm:126:0 0.00 0.02 0.00 system/vm/assembler.scm:1213:0:link-data 0.00 0.02 0.00 ice-9/psyntax.scm:1887:8:parse-body 0.00 0.02 0.00 :8:9 0.00 0.02 0.00 oop/goops/dispatch.scm:217:0:cache-dispatch 0.00 0.02 0.00 language/cps/types.scm:233:0:var-type 0.00 0.02 0.00 srfi/srfi-1.scm:835:0:any1 0.00 0.02 0.00 system/vm/elf.scm:819:0:string-table-ref 0.00 0.02 0.00 language/cps/type-fold.scm:346:4:visit-cont 0.00 0.02 0.00 ice-9/boot-9.scm:797:2:catch 0.00 0.02 0.00 system/vm/assembler.scm:413:0:make-assembler 0.00 0.02 0.00 language/cps/intset.scm:463:0:intset-subtract 0.00 0.02 0.00 language/cps/intset.scm:108:0:add-level 0.00 0.02 0.00 language/cps/simplify.scm:36:0:compute-eta-redu= ctions 0.00 0.02 0.00 module/gaiag/gom/util.scm:299:0 0.00 0.02 0.00 language/cps/renumber.scm:35:0:sort-conts 0.00 0.02 0.00 ice-9/psyntax.scm:1438:28 0.00 0.02 0.00 oop/goops/dispatch.scm:65:0:emit-linear-dispatch 0.00 0.02 0.00 ice-9/psyntax.scm:1715:8:req 0.00 0.02 0.00 module/gaiag/reader.scm:76:0:read-ast 0.00 0.02 0.00 module/gaiag/gom/util.scm:443:0 --- Sample count: 494 Total time: 8.344575114 seconds (0.805487149 seconds in GC) --=20 Jan Nieuwenhuizen | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar=C2=AE http://AvatarAcademy.nl= =20=20