diff options
author | Steve Bennett <steveb@workware.net.au> | 2010-01-24 12:56:45 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2010-10-15 11:02:45 +1000 |
commit | 5dbbcf87423edb96cde7dfe59a2c8ef0a9d8ae2f (patch) | |
tree | 80fbe36dad45f9ee8ca33464933abf2a43f22db1 /bench.tcl | |
parent | 9373863b490be45da1b823949ebd76425057dd3e (diff) | |
download | jimtcl-5dbbcf87423edb96cde7dfe59a2c8ef0a9d8ae2f.zip jimtcl-5dbbcf87423edb96cde7dfe59a2c8ef0a9d8ae2f.tar.gz jimtcl-5dbbcf87423edb96cde7dfe59a2c8ef0a9d8ae2f.tar.bz2 |
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)
Diffstat (limited to 'bench.tcl')
-rw-r--r-- | bench.tcl | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -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 ################################################################## |