From 5dbbcf87423edb96cde7dfe59a2c8ef0a9d8ae2f Mon Sep 17 00:00:00 2001 From: Steve Bennett Date: Sun, 24 Jan 2010 12:56:45 +1000 Subject: Simplify and speed up expr *: Reuse the ParseTokenList/ScriptToken machinery for 'expr' *: This is simpler than managing separate opcode/obj arrays *: expr opcodes are now in the same namespace as token types *: expr identifies int and double during parsing *: Move the 'while' common expr optimisations into Jim_EvalExpression *: Add a special trueObj and falseObj to help with these boolean optimisations *: Add lazy versions as the byte code is created instead of at the end *: Avoid repeated conversion attempts to int *: Once an object fails conversion to int and succeeds conversion to double, invalidate the string rep so the int conversion attempt no longer happens *: Also, avoid converting non-ints to int in expression optimisation *: No need for a string token for SEP and EOL tokens *: Fix shimmering of int -> double *: When an int shimmers to a double during an expression, remember that the value was originally an int (via a new type, coerced double) --- bench.tcl | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'bench.tcl') diff --git a/bench.tcl b/bench.tcl index 9e7601a..4e26a5f 100644 --- a/bench.tcl +++ b/bench.tcl @@ -24,12 +24,15 @@ proc bench {title script} { proc whilebusyloop {} { set i 0 while {$i < 1850000} { + set a 2 incr i } } proc forbusyloop {} { - for {set i 0} {$i < 1850000} {incr i} {} + for {set i 0} {$i < 1850000} {incr i} { + set a 2 + } } ### FIBONACCI ################################################################## -- cgit v1.1