Related performance issue, using latest Itcl (4.1.1) versus 3.2, a 2.6X slowdown in simple script Itcl 3.2: 4.7 seconds Itcl 4.1.1: 12.2 seconds Script is: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17#!/bin/sh #-*-Tcl-*- the next line restarts using wish \ exec tclsh "$0" "$@" puts "Itcl version: [package require Itcl]" itcl::class myclass { public method member_function {} {} public method call_member_function {ntimes} { for {set i 0} {$i < $ntimes} {incr i} { member_function } } } myclass myobj puts...
itcl::scope and itcl::configbody interaction: can't scope variable: missing object context
Can I request a new release of Itcl with this patch on it? 4.1.2? We're trying to finish our porting to Tcl 8.6, and this would help us improve our performance tests to come close to 8.4 performance.
That was huge. Thanks. The time spent in Tcl_Preserve/Tcl_Release is much reduced (from a total of >20 seconds to about 6 seconds). There are no obvious Itcl-related performance issues for this particular usage of my tool. On to the next issue for me!
Gladly.
So... did you want something specific from me? I could update the Itcl code to see which calls are actually being taken - along with a counter. Let me know, I can modify things.
Side question - in my profiling, the vast majority of the time (between 3.2 and 4.1.1) appears to be in Tcl_Preserve/Tcl_Release, and those appear to be relatively unchanged between Tcl 8.4 and 8.6. Any idea why this might be? Just used more now? Perhaps teh Tcl_MutexLock/Unlock is slower? (I've got a single Tcl interpreter, there might be other threads in the application, but they're not Tcl related....)
Object creation local to a proc is 3-4X slower in 4.1.1 vs. 3.2 (don' t have 3.4 numbers) Itcl 3.2 12 microseconds per iteration for 10000 creation of objects in a proc call Itcl 4.1.1 45.0342 microseconds per iteration for 10000 creation of objects in a proc call Note: it's only about 36 microseconds if the SimpleClass is an empty class, ala itcl::class SimpleClass {} But it's instructive that adding a variable and method to a class increases the runtime by ~30% in 4.1.1, whereas in 3.2, the runtime...