Changes by: Jason J. Hickey (jyh at cs.caltech.edu)
Date: 2007-11-06 18:48:17 -0800 (Tue, 06 Nov 2007)
Revision: 12583
Log message:
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 | Path(relative to 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) |