Deutsch   English   Français   Italiano  
<vgqi2i$e5uc$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!feeder2.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Harald Oehlmann <wortkarg3@yahoo.com>
Newsgroups: comp.lang.tcl
Subject: Re: Performance problems with "photo copy -to"
Date: Sun, 10 Nov 2024 16:04:52 +0100
Organization: A noiseless patient Spider
Lines: 120
Message-ID: <vgqi2i$e5uc$1@dont-email.me>
References: <vgj8r1$2poj6$1@dont-email.me> <vgm0vv$3c2ek$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Sun, 10 Nov 2024 16:04:50 +0100 (CET)
Injection-Info: dont-email.me; posting-host="141381629990736127a3e914f4075b95";
	logging-data="464844"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1/Kh4f86mrvf5gjEXJ3UD9X"
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:e8zeuelTVVEfW6eo18aJ/LymKHQ=
In-Reply-To: <vgm0vv$3c2ek$1@dont-email.me>
Content-Language: en-GB
Bytes: 5647

The horrible performence of images with an alpha channel on WIndows and 
Mac-OS is a long standing bug and subject of many tickets....

It would be great to attack this issue...

Thanks,
Harald

Am 08.11.2024 um 22:48 schrieb Paul Obermeier:
> After some more tests it looks like the source of the problem with issue 
> 1 is the handling of the alpha channel.
> 
> I created 4 test images and rewrote the test script.
> 
> One image contains just 3 channels (RGB) and three images contain 4 
> channels (RGBA),
> where the alpha channel is either fully opaque, fully transparent or 
> partial transparent.
> Only the partial transparent image behaves as expected, i.e. has linear 
> time increase.
> 
> Using Tcl 9.0.0, Tk 9.0.0
> Using file Balls-3chan.png
> Time for  100 copies:  1.36 seconds ( 13 milliseconds / copy)
> Time for  400 copies: 20.14 seconds ( 50 milliseconds / copy)
> Using file Balls-4chan-transp.png
> Time for  100 copies:  1.27 seconds ( 12 milliseconds / copy)
> Time for  400 copies: 19.82 seconds ( 49 milliseconds / copy)
> Using file Balls-4chan-opaque.png
> Time for  100 copies:  1.36 seconds ( 13 milliseconds / copy)
> Time for  400 copies: 20.18 seconds ( 50 milliseconds / copy)
> Using file Balls-4chan-partial.png
> Time for  100 copies:  0.13 seconds (  1 milliseconds / copy)
> Time for  400 copies:  0.56 seconds (  1 milliseconds / copy)
> 
> Find the test images and the script at https://www.tcl3d.org/download/ 
> PhotoCopyBug.zip
> If someone again can confirm the above behaviour, I would create a Tk 
> ticket.
> 
> Regarding issue 2 I get totally different results on various systems:
> Fedora 40  : No time differences between Tcl/Tk versions.
> Suse 15.6  : No time differences between Tcl/Tk versions.
> Ubuntu 24  : Tcl/Tk9 twice as fast as the other combinations.
> Debian 12.6: Tcl/Tk9 twice as slow as the other combinations.
> Windows 11 : Tcl/Tk8.6.15 twice as fast as the other combinations.
> 
> Paul
> 
> 
> Am 07.11.2024 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
>