Just for interest I implemented one of the OO tests from Doug's shootout (http://www.bagley.org/~doug/shootout/) in XOTcl to see how it would fare. Specifically it was the method call speed test (http://www.bagley.org/~doug/shootout/bench/methcall/). I have attached my code to this email.
According to my own tests, it didn't do terribly well, but it's difficult to say whether this is a limitation of Tcl (which doesn't do very well in several of those speed tests) or just a sign that there might be some room for optimisation in XOTcl itself. Now what would be interesting would be a comparison with iTcl -- but as I don't know it I'll leave that for someone else. Any comments?
- ---------- = = ---------//--+ | / Kristoffer Lawson | www.fishpool.fi|.com +-> | setok@fishpool.com | - - --+------ |-- Fishpool Creations Ltd - / | +-------- = - - - = --------- /~setok/
"KL" == Kristoffer Lawson setok@fishpool.com writes:
KL> Just for interest I implemented one of the OO tests from Doug's shootout KL> (http://www.bagley.org/~doug/shootout/) in XOTcl to see how it would KL> fare. Specifically it was the method call speed test KL> (http://www.bagley.org/~doug/shootout/bench/methcall/). I have attached my KL> code to this email.
KL> According to my own tests, it didn't do terribly well, but it's difficult KL> to say whether this is a limitation of Tcl (which doesn't do very well in KL> several of those speed tests) or just a sign that there might be some room KL> for optimisation in XOTcl itself. Now what would be interesting would KL> be a comparison with iTcl -- but as I don't know it I'll leave that for KL> someone else. Any comments?
Dear Kristoffer,
this test is not a very good test for xotcl, but one should not complain about other people's benchmarks.
Our forthcoming version will have some significant performance improvements (which will be for this example in the range of 5-10%, for other examples we have seen up to 50%). Some of the changes were over-aggressive, we might have to take some of these back.
however, i tried the example of yours in itcl, and the result was about 30% slower than the current development version of xotcl. i am not an itcl expert, so i would not wonder, if if have done something wrong, of if someone else get some better figures by using a different implementation.
best regards -gustaf
============================================================================= class Toggle { variable state constructor startState { set state $startState } method value {} { return $state } method activate {} { set state [expr {! $state}] return $this } }
class NthToggle { inherit Toggle variable counter variable countMax
constructor {startState maxCounter} { Toggle::constructor $startState } { set countMax $maxCounter set counter 0 } method activate {} { incr counter if {$counter >= $countMax} { set state [expr {! $state}] set counter 0 } return $this } }
proc main {} { global argv
set n [lindex $argv 0] set val 1 set toggle [Toggle t $val]
for {set i 0} {$i < $n} {incr i} { set val [[$toggle activate] value] } if {$val} { puts "true" } else { puts "false" }
set val 1 set ntoggle [NthToggle nt 1 3] for {set i 0} {$i < $n} {incr i} { set val [[$toggle activate] value] } if {$val} { puts "true" } else { puts "false" } }
main