Path: ...!eternal-september.org!feeder2.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: greg Newsgroups: comp.lang.tcl Subject: Re: Performance problems with "photo copy -to" Date: Fri, 8 Nov 2024 02:36:11 +0100 Organization: A noiseless patient Spider Lines: 89 Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Fri, 08 Nov 2024 02:36:11 +0100 (CET) Injection-Info: dont-email.me; posting-host="c016d56a3120e3d13eba521e7a0d1eba"; logging-data="3052156"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+VnYtlHT1LByw5mQN2Nc/0UI5xw4kjhaY=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:4aMQPkwqgtBKsyqTP8k7uI6Tgu0= Content-Language: de-DE In-Reply-To: Bytes: 4006 Am 07.11.24 um 21:43 schrieb Paul Obermeier: > I have a simple tiling procedure and noticed a slowdown when using large > images, > i.e. when doing lots of copies. > > I noticed the following behaviours (both on Windows and Linux): > 1. The time for copying does not grow linearly, as expected, but gets > larger the more copies are involved. > 2. The copy time of Tcl/Tk 9 is nearly twice the time as when using Tcl/ > Tk 8.6.15 or the combination >    Tcl 8.7/Tk 9. So this performance degradation does not seem to stem > from Tk9, but from Tcl9. Strange! > > Can anybody confirm my measurements? > > Thanks, > Paul > > > Using Tcl 8.6.15, Tk 8.6.15 > Time for  100 copies:  0.69 seconds (  6 milliseconds / copy) > Time for  400 copies: 10.26 seconds ( 25 milliseconds / copy) > Time for  900 copies: 51.12 seconds ( 56 milliseconds / copy) > > Using Tcl 8.7b1, Tk 9.0.0 > Time for  100 copies:  0.70 seconds (  7 milliseconds / copy) > Time for  400 copies: 10.22 seconds ( 25 milliseconds / copy) > Time for  900 copies: 51.35 seconds ( 57 milliseconds / copy) > > Using Tcl 9.0.0, Tk 9.0.0 > Time for  100 copies:  1.28 seconds ( 12 milliseconds / copy) > Time for  400 copies: 19.45 seconds ( 48 milliseconds / copy) > Time for  900 copies: 98.16 seconds (109 milliseconds / copy) > > > package require Tk > > proc Tile { phImg xRepeat yRepeat } { >     set startTime [clock milliseconds] >     set w [image width  $phImg] >     set h [image height $phImg] >     set w2 [expr {$w * $xRepeat}] >     set h2 [expr {$h * $yRepeat}] > >     set tileImg [image create photo -width $w2 -height $h2] > >     for { set x 0 } { $x < $xRepeat } { incr x } { >         for { set y 0 } { $y < $yRepeat } { incr y } { >             $tileImg copy $phImg -to [expr {$x*$w}] [expr {$y*$h}] >         } >     } >     set endTime [clock milliseconds] >     puts [format "Time for %4d copies: %5.2f seconds (%3d > milliseconds / copy)" \ >          [expr {$xRepeat * $yRepeat}] \ >          [expr { ($endTime - $startTime) / 1000.0 }] \ >          [expr { ($endTime - $startTime) / ($xRepeat * $yRepeat) }]] >     return $tileImg > } > > set srcImg [image create photo -width 500 -height 500] > > puts "Using Tcl [info patch], Tk [package version Tk]" > Tile $srcImg 10 10 > Tile $srcImg 20 20 > Tile $srcImg 30 30 > > exit Hello, Using Tcl 8.6.15, Tk 8.6.15 Time for 100 copies: 1.52 seconds ( 15 milliseconds / copy) Time for 400 copies: 23.17 seconds ( 57 milliseconds / copy) Time for 900 copies: 117.39 seconds (130 milliseconds / copy) Using Tcl 9.0.0, Tk 9.0.0 Time for 100 copies: 1.50 seconds ( 14 milliseconds / copy) Time for 400 copies: 23.18 seconds ( 57 milliseconds / copy) Time for 900 copies: 117.57 seconds (130 milliseconds / copy) both Tcl/Tk from debian sid Gregor