[Omake] SVN Commit: OMake Build System (Rev. 12583)

Jason J. Hickey jyh at cs.caltech.edu
Tue Nov 6 18:48:17 PST 2007


Performance optimization: use Array for arguments, instead of List.

This is a surprise to me, but the optimization results in a slight slowdown,
and 5%.  That isn't statistically significant on a single run, but the slowdown
is consistent.  This is despite the fact that the evaluator uses List.map
a lot.

I guess the reason is that the argument lists tend to be small and short-lived,
so the extra allocation rate is no big deal.  Still, it is a little surprising.

----
Changes in omake-branches/jumbo/array-args:
    Copied      . (from rev 12468, omake-branches/0.9.8.x)
    Replaced    OMakefile
    Copied      OMakefile (from rev 12575, omake-branches/0.9.8.x/OMakefile)
    Copied      bench/ (from rev 12575, omake-branches/0.9.8.x/bench)
    +1 -1       bench/mandel/Test1
    Replaced    doc/html/omake-all-index.html
    Copied      doc/html/omake-all-index.html (from rev 12469, omake-branches/0.9.8.x/doc/html/omake-all-index.html)
    Replaced    doc/html/omake-autoconf.html
    Copied      doc/html/omake-autoconf.html (from rev 12469, omake-branches/0.9.8.x/doc/html/omake-autoconf.html)
    Replaced    doc/html/omake-base.html
    Copied      doc/html/omake-base.html (from rev 12469, omake-branches/0.9.8.x/doc/html/omake-base.html)
    Replaced    doc/html/omake-build-examples.html
    Copied      doc/html/omake-build-examples.html (from rev 12469, omake-branches/0.9.8.x/doc/html/omake-build-examples.html)
    Replaced    doc/html/omake-build.html
    Copied      doc/html/omake-build.html (from rev 12469, omake-branches/0.9.8.x/doc/html/omake-build.html)
    Replaced    doc/html/omake-contents.html
    Copied      doc/html/omake-contents.html (from rev 12469, omake-branches/0.9.8.x/doc/html/omake-contents.html)
    Replaced    doc/html/omake-detail.html
    Copied      doc/html/omake-detail.html (from rev 12469, omake-branches/0.9.8.x/doc/html/omake-detail.html)
    Replaced    doc/html/omake-doc.html
    Copied      doc/html/omake-doc.html (from rev 12469, omake-branches/0.9.8.x/doc/html/omake-doc.html)
    Replaced    doc/html/omake-fun-index.html
    Copied      doc/html/omake-fun-index.html (from rev 12469, omake-branches/0.9.8.x/doc/html/omake-fun-index.html)
    Replaced    doc/html/omake-grammar.html
    Copied      doc/html/omake-grammar.html (from rev 12469, omake-branches/0.9.8.x/doc/html/omake-grammar.html)
    Replaced    doc/html/omake-language-examples.html
    Copied      doc/html/omake-language-examples.html (from rev 12469, omake-branches/0.9.8.x/doc/html/omake-language-examples.html)
    Replaced    doc/html/omake-language-naming.html
    Copied      doc/html/omake-language-naming.html (from rev 12469, omake-branches/0.9.8.x/doc/html/omake-language-naming.html)
    Replaced    doc/html/omake-language.html
    Copied      doc/html/omake-language.html (from rev 12469, omake-branches/0.9.8.x/doc/html/omake-language.html)
    Replaced    doc/html/omake-obj-index.html
    Copied      doc/html/omake-obj-index.html (from rev 12469, omake-branches/0.9.8.x/doc/html/omake-obj-index.html)
    Replaced    doc/html/omake-option-index.html
    Copied      doc/html/omake-option-index.html (from rev 12469, omake-branches/0.9.8.x/doc/html/omake-option-index.html)
    Replaced    doc/html/omake-options.html
    Copied      doc/html/omake-options.html (from rev 12469, omake-branches/0.9.8.x/doc/html/omake-options.html)
    Replaced    doc/html/omake-pervasives.html
    Copied      doc/html/omake-pervasives.html (from rev 12469, omake-branches/0.9.8.x/doc/html/omake-pervasives.html)
    Replaced    doc/html/omake-quickstart.html
    Copied      doc/html/omake-quickstart.html (from rev 12469, omake-branches/0.9.8.x/doc/html/omake-quickstart.html)
    Replaced    doc/html/omake-references.html
    Copied      doc/html/omake-references.html (from rev 12469, omake-branches/0.9.8.x/doc/html/omake-references.html)
    Replaced    doc/html/omake-rules.html
    Copied      doc/html/omake-rules.html (from rev 12469, omake-branches/0.9.8.x/doc/html/omake-rules.html)
    Replaced    doc/html/omake-shell.html
    Copied      doc/html/omake-shell.html (from rev 12469, omake-branches/0.9.8.x/doc/html/omake-shell.html)
    Replaced    doc/html/omake-system.html
    Copied      doc/html/omake-system.html (from rev 12469, omake-branches/0.9.8.x/doc/html/omake-system.html)
    Replaced    doc/html/omake-target-index.html
    Copied      doc/html/omake-target-index.html (from rev 12469, omake-branches/0.9.8.x/doc/html/omake-target-index.html)
    Replaced    doc/html/omake-toc.html
    Copied      doc/html/omake-toc.html (from rev 12469, omake-branches/0.9.8.x/doc/html/omake-toc.html)
    Replaced    doc/html/omake-var-index.html
    Copied      doc/html/omake-var-index.html (from rev 12469, omake-branches/0.9.8.x/doc/html/omake-var-index.html)
    Replaced    doc/html/omake.html
    Copied      doc/html/omake.html (from rev 12469, omake-branches/0.9.8.x/doc/html/omake.html)
    Replaced    doc/html/osh.html
    Copied      doc/html/osh.html (from rev 12469, omake-branches/0.9.8.x/doc/html/osh.html)
    Replaced    doc/info/omake-doc.info
    Copied      doc/info/omake-doc.info (from rev 12469, omake-branches/0.9.8.x/doc/info/omake-doc.info)
    Replaced    doc/info/omake-doc.info-1
    Copied      doc/info/omake-doc.info-1 (from rev 12469, omake-branches/0.9.8.x/doc/info/omake-doc.info-1)
    Replaced    doc/info/omake-doc.info-10
    Copied      doc/info/omake-doc.info-10 (from rev 12469, omake-branches/0.9.8.x/doc/info/omake-doc.info-10)
    Replaced    doc/info/omake-doc.info-2
    Copied      doc/info/omake-doc.info-2 (from rev 12469, omake-branches/0.9.8.x/doc/info/omake-doc.info-2)
    Replaced    doc/info/omake-doc.info-3
    Copied      doc/info/omake-doc.info-3 (from rev 12469, omake-branches/0.9.8.x/doc/info/omake-doc.info-3)
    Replaced    doc/info/omake-doc.info-4
    Copied      doc/info/omake-doc.info-4 (from rev 12469, omake-branches/0.9.8.x/doc/info/omake-doc.info-4)
    Replaced    doc/info/omake-doc.info-5
    Copied      doc/info/omake-doc.info-5 (from rev 12469, omake-branches/0.9.8.x/doc/info/omake-doc.info-5)
    Replaced    doc/info/omake-doc.info-6
    Copied      doc/info/omake-doc.info-6 (from rev 12469, omake-branches/0.9.8.x/doc/info/omake-doc.info-6)
    Replaced    doc/info/omake-doc.info-7
    Copied      doc/info/omake-doc.info-7 (from rev 12469, omake-branches/0.9.8.x/doc/info/omake-doc.info-7)
    Replaced    doc/info/omake-doc.info-8
    Copied      doc/info/omake-doc.info-8 (from rev 12469, omake-branches/0.9.8.x/doc/info/omake-doc.info-8)
    Replaced    doc/info/omake-doc.info-9
    Copied      doc/info/omake-doc.info-9 (from rev 12469, omake-branches/0.9.8.x/doc/info/omake-doc.info-9)
    Replaced    doc/ps/omake-doc.dvi
    Copied      doc/ps/omake-doc.dvi (from rev 12469, omake-branches/0.9.8.x/doc/ps/omake-doc.dvi)
    Replaced    doc/ps/omake-doc.pdf
    Copied      doc/ps/omake-doc.pdf (from rev 12469, omake-branches/0.9.8.x/doc/ps/omake-doc.pdf)
    Replaced    doc/ps/omake-doc.ps
    Copied      doc/ps/omake-doc.ps (from rev 12469, omake-branches/0.9.8.x/doc/ps/omake-doc.ps)
    Replaced    doc/src/omake-grammar.tex
    Copied      doc/src/omake-grammar.tex (from rev 12469, omake-branches/0.9.8.x/doc/src/omake-grammar.tex)
    Replaced    doc/txt/omake-doc.txt
    Copied      doc/txt/omake-doc.txt (from rev 12469, omake-branches/0.9.8.x/doc/txt/omake-doc.txt)
    Replaced    lib/Pervasives.om
    Copied      lib/Pervasives.om (from rev 12469, omake-branches/0.9.8.x/lib/Pervasives.om)
    Replaced    lib/parse/LaTeX/Spell.om
    Copied      lib/parse/LaTeX/Spell.om (from rev 12575, omake-branches/0.9.8.x/lib/parse/LaTeX/Spell.om)
    Replaced    mk/make_gen
    Copied      mk/make_gen (from rev 12512, omake-branches/0.9.8.x/mk/make_gen)
    Replaced    src/Makefile
    Copied      src/Makefile (from rev 12497, omake-branches/0.9.8.x/src/Makefile)
    Replaced    src/Makefile.nt
    Copied      src/Makefile.nt (from rev 12497, omake-branches/0.9.8.x/src/Makefile.nt)
    Replaced    src/ast/omake_ast.ml
    Copied      src/ast/omake_ast.ml (from rev 12469, omake-branches/0.9.8.x/src/ast/omake_ast.ml)
    Replaced    src/ast/omake_ast_print.ml
    Copied      src/ast/omake_ast_print.ml (from rev 12469, omake-branches/0.9.8.x/src/ast/omake_ast_print.ml)
    Replaced    src/ast/omake_ast_util.ml
    Copied      src/ast/omake_ast_util.ml (from rev 12469, omake-branches/0.9.8.x/src/ast/omake_ast_util.ml)
    Replaced    src/ast/omake_ast_util.mli
    Copied      src/ast/omake_ast_util.mli (from rev 12469, omake-branches/0.9.8.x/src/ast/omake_ast_util.mli)
    +4 -3       src/build/omake_builtin.ml
    +2 -2       src/build/omake_builtin_type.ml
    Replaced    src/build/omake_rule.ml
    Copied      src/build/omake_rule.ml (from rev 12555, omake-branches/0.9.8.x/src/build/omake_rule.ml)
    +1 -1       src/build/omake_rule.ml (from rev 12555, omake-branches/0.9.8.x/src/build/omake_rule.ml)
    +83 -59     src/builtin/omake_builtin_arith.ml
    Replaced    src/builtin/omake_builtin_base.ml
    Copied      src/builtin/omake_builtin_base.ml (from rev 12512, omake-branches/0.9.8.x/src/builtin/omake_builtin_base.ml)
    +159 -137   src/builtin/omake_builtin_base.ml (from rev 12512, omake-branches/0.9.8.x/src/builtin/omake_builtin_base.ml)
    +99 -99     src/builtin/omake_builtin_file.ml
    +7 -7       src/builtin/omake_builtin_fun.ml
    +148 -142   src/builtin/omake_builtin_io.ml
    +40 -40     src/builtin/omake_builtin_io_fun.ml
    Replaced    src/builtin/omake_builtin_object.ml
    Copied      src/builtin/omake_builtin_object.ml (from rev 12555, omake-branches/0.9.8.x/src/builtin/omake_builtin_object.ml)
    +75 -73     src/builtin/omake_builtin_object.ml (from rev 12555, omake-branches/0.9.8.x/src/builtin/omake_builtin_object.ml)
    +10 -10     src/builtin/omake_builtin_rule.ml
    +16 -13     src/builtin/omake_builtin_shell.ml
    +20 -20     src/builtin/omake_builtin_sys.ml
    +16 -16     src/builtin/omake_builtin_target.ml
    +9 -9       src/builtin/omake_builtin_test.ml
    Replaced    src/env/
    Copied      src/env/ (from rev 12469, omake-branches/0.9.8.x/src/env)
    Replaced    src/env/omake_command_digest.ml
    Copied      src/env/omake_command_digest.ml (from rev 12555, omake-branches/0.9.8.x/src/env/omake_command_digest.ml)
    +47 -51     src/env/omake_command_digest.ml (from rev 12555, omake-branches/0.9.8.x/src/env/omake_command_digest.ml)
    Replaced    src/env/omake_env.ml
    Copied      src/env/omake_env.ml (from rev 12514, omake-branches/0.9.8.x/src/env/omake_env.ml)
    +182 -111   src/env/omake_env.ml (from rev 12514, omake-branches/0.9.8.x/src/env/omake_env.ml)
    Replaced    src/env/omake_env.mli
    Copied      src/env/omake_env.mli (from rev 12514, omake-branches/0.9.8.x/src/env/omake_env.mli)
    +10 -10     src/env/omake_env.mli (from rev 12514, omake-branches/0.9.8.x/src/env/omake_env.mli)
    Replaced    src/env/omake_exp_lex.ml
    Copied      src/env/omake_exp_lex.ml (from rev 12575, omake-branches/0.9.8.x/src/env/omake_exp_lex.ml)
    Replaced    src/env/omake_ir_ast.ml
    Copied      src/env/omake_ir_ast.ml (from rev 12556, omake-branches/0.9.8.x/src/env/omake_ir_ast.ml)
    +18 -18     src/env/omake_ir_ast.ml (from rev 12556, omake-branches/0.9.8.x/src/env/omake_ir_ast.ml)
    Replaced    src/env/omake_ir_semant.ml
    Copied      src/env/omake_ir_semant.ml (from rev 12555, omake-branches/0.9.8.x/src/env/omake_ir_semant.ml)
    +27 -20     src/env/omake_ir_semant.ml (from rev 12555, omake-branches/0.9.8.x/src/env/omake_ir_semant.ml)
    Replaced    src/eval/omake_eval.ml
    Copied      src/eval/omake_eval.ml (from rev 12555, omake-branches/0.9.8.x/src/eval/omake_eval.ml)
    +100 -89    src/eval/omake_eval.ml (from rev 12555, omake-branches/0.9.8.x/src/eval/omake_eval.ml)
    Replaced    src/eval/omake_eval.mli
    Copied      src/eval/omake_eval.mli (from rev 12555, omake-branches/0.9.8.x/src/eval/omake_eval.mli)
    +2 -2       src/eval/omake_eval.mli (from rev 12555, omake-branches/0.9.8.x/src/eval/omake_eval.mli)
    Replaced    src/eval/omake_value.ml
    Copied      src/eval/omake_value.ml (from rev 12555, omake-branches/0.9.8.x/src/eval/omake_value.ml)
    Replaced    src/ir/omake_ir.ml
    Copied      src/ir/omake_ir.ml (from rev 12555, omake-branches/0.9.8.x/src/ir/omake_ir.ml)
    +8 -8       src/ir/omake_ir.ml (from rev 12555, omake-branches/0.9.8.x/src/ir/omake_ir.ml)
    Replaced    src/ir/omake_ir_free_vars.ml
    Copied      src/ir/omake_ir_free_vars.ml (from rev 12555, omake-branches/0.9.8.x/src/ir/omake_ir_free_vars.ml)
    +27 -30     src/ir/omake_ir_free_vars.ml (from rev 12555, omake-branches/0.9.8.x/src/ir/omake_ir_free_vars.ml)
    Replaced    src/ir/omake_ir_print.ml
    Copied      src/ir/omake_ir_print.ml (from rev 12555, omake-branches/0.9.8.x/src/ir/omake_ir_print.ml)
    +32 -43     src/ir/omake_ir_print.ml (from rev 12555, omake-branches/0.9.8.x/src/ir/omake_ir_print.ml)
    Replaced    src/ir/omake_ir_util.ml
    Copied      src/ir/omake_ir_util.ml (from rev 12512, omake-branches/0.9.8.x/src/ir/omake_ir_util.ml)
    Replaced    src/ir/omake_symbol.ml
    Copied      src/ir/omake_symbol.ml (from rev 12497, omake-branches/0.9.8.x/src/ir/omake_symbol.ml)
    Replaced    src/ir/omake_value_print.ml
    Copied      src/ir/omake_value_print.ml (from rev 12555, omake-branches/0.9.8.x/src/ir/omake_value_print.ml)
    Replaced    src/ir/omake_value_type.ml
    Copied      src/ir/omake_value_type.ml (from rev 12555, omake-branches/0.9.8.x/src/ir/omake_value_type.ml)
    +3 -3       src/ir/omake_value_type.ml (from rev 12555, omake-branches/0.9.8.x/src/ir/omake_value_type.ml)
    Replaced    src/main/omake_shell.ml
    Copied      src/main/omake_shell.ml (from rev 12555, omake-branches/0.9.8.x/src/main/omake_shell.ml)
    +1 -1       src/main/omake_shell.ml (from rev 12555, omake-branches/0.9.8.x/src/main/omake_shell.ml)
    Replaced    src/shell/omake_shell_lex.ml
    Copied      src/shell/omake_shell_lex.ml (from rev 12469, omake-branches/0.9.8.x/src/shell/omake_shell_lex.ml)
    Replaced    test/OMakefile
    Copied      test/OMakefile (from rev 12512, omake-branches/0.9.8.x/test/OMakefile)
    Replaced    test/curry/Test2
    Copied      test/curry/Test2 (from rev 12512, omake-branches/0.9.8.x/test/curry/Test2)
    Replaced    test/curry/Test3
    Copied      test/curry/Test3 (from rev 12512, omake-branches/0.9.8.x/test/curry/Test3)
    Replaced    test/keyword/Test5
    Copied      test/keyword/Test5 (from rev 12512, omake-branches/0.9.8.x/test/keyword/Test5)
    Copied      test/lazy/ (from rev 12555, omake-branches/0.9.8.x/test/lazy)
    Replaced    test/lazy/Test1
    Copied      test/lazy/Test1 (from rev 12556, omake-branches/0.9.8.x/test/lazy/Test1)
    Copied      test/syntax/ (from rev 12469, omake-branches/0.9.8.x/test/syntax)
    Replaced    test/syntax/Test1
    Copied      test/syntax/Test1 (from rev 12497, omake-branches/0.9.8.x/test/syntax/Test1)
    Replaced    test/syntax/Test2
    Copied      test/syntax/Test2 (from rev 12497, omake-branches/0.9.8.x/test/syntax/Test2)
    Replaced    test/syntax/Test3
    Copied      test/syntax/Test3 (from rev 12497, omake-branches/0.9.8.x/test/syntax/Test3)
 
A hyperlinked version of this commit is available at
http://svn.metaprl.org/commitlogs/omake/2007-11.html#07/11/06.18:48:17



More information about the OMake-CVS mailing list