diff options
author | Steve Bennett <steveb@workware.net.au> | 2010-01-24 10:53:36 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2010-10-15 11:02:39 +1000 |
commit | 6ef810ae664dccd457fe1ed750f7d509b6f60878 (patch) | |
tree | 13f3ab69416d1fc7f5d10db06c1bf83aa0153e4f /tests/regexp.test | |
parent | a0017cc44c22a83df8f92600317ad8ccd635e2a1 (diff) | |
download | jimtcl-6ef810ae664dccd457fe1ed750f7d509b6f60878.zip jimtcl-6ef810ae664dccd457fe1ed750f7d509b6f60878.tar.gz jimtcl-6ef810ae664dccd457fe1ed750f7d509b6f60878.tar.bz2 |
Bugs, features and tests
source fails with zero length file
unknown can't be called recursively
*: This can be useful when using unknown to dynamically load code,
which may in turn want to dynamically load code
*: Limit it to 50 recursions though
Allow string greater/less comparison
*: Comparing two strings for order did not work
Implement file join
*: It's not to hard and is handy when working with the current dir, ""
Don't omit [unknown] completely from stack trace
*: Since we lose valuable informtion, just omit the name
Fix return from case
Turn regexp patterns into real objects
*: Thus caching the compiled regexps
Allow error to rethrow an error
Replace bcopy() with more standard memcpy()
Fixes to parray, improve errorInfo
*: errorInfo takes an optional stack trace
Add tests for rethrowing errors via errorInfo
Fix ndelay
*: Was looking at wrong param
*: Also fix usage/help for aio.socket
Package should be able to call exit
*: Currently any return from a package is changed to JIM_ERR
Line counting is incorrect for backlash newline
Diffstat (limited to 'tests/regexp.test')
-rw-r--r-- | tests/regexp.test | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/regexp.test b/tests/regexp.test new file mode 100644 index 0000000..86ba17a --- /dev/null +++ b/tests/regexp.test @@ -0,0 +1,35 @@ +source testing.tcl + +test regexp-1.1 {effect of caching} { + + set filedata {BEGIN_TABLE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END_TABLE} + + # Note: use 2 REs because often libc will cache a single regcomp() result + + # t1 should be faster because the compiled re can be cached. + set re1 "END_TABLE" + set re2 "BEGIN_TABLE" + + set t1 [time { + regexp -inline -all $re1 $filedata + regexp -inline -all $re2 $filedata + } 10000] + + # t2 should be slower since the re's need to be recompiled every time + set t2 [time { + set re1 END + append re1 _TABLE + regexp -inline -all $re1 $filedata + set re2 BEGIN + append re2 _TABLE + regexp -inline -all $re2 $filedata + } 10000] + + set t1 [lindex $t1 0] + set t2 [lindex $t2 0] + + #puts "t1=$t1, t2=$t2" + + # If these two times are within 20% of each other, caching isn't working + expr {$t2 / $t1 < 1.2 && $t1 / $t2 < 1.2} +} {0} |