OUTPUT BUFFER:
#!/usr/local/bin/wish proc Init {} { global tx1 tx2 toplevel .t text .t.t1 -width 50 -height 10 pack .t.t1 text .t.t2 -width 50 -height 10 pack .t.t2 set tx1 ".t.t1" set tx2 ".t.t2" set comp 0 while {$comp < 3000} { foreach c {A B C " "} { set done 0 while {! $done} { set nal [expr int(floor(rand()*1000))] if {! [info exists T($comp)]} { set T($comp) $c set done 1 incr comp } } } } for {set i 0} {$i < 3000} {incr i} {append txt [set T($i)]} $tx1 insert end $txt $tx2 insert end $txt $tx1 tag configure ATag -background green $tx1 tag configure BTag -background yellow $tx1 tag configure CTag -background red $tx2 tag configure ATag -background green $tx2 tag configure BTag -background yellow $tx2 tag configure CTag -background red return } proc AddTag {} { global tx1 tx2 set ls [split [$tx1 get 1.0 end] ""] foreach c {A B C} { set lv [lsearch -all $ls "$c"] set lt {} foreach d $lv {lappend lt 1.$d 1.[expr $d+1]} puts "natif" puts "[lrange $lt 0 9]" puts "$c [time {eval $tx1 tag add ${c}Tag $lt} 10]" puts "random" set ne [expr [llength $lt]/2-1] for {set i $ne} {$i >= 0} {incr i -1} { set x [expr int(floor(rand()*$i))] set p1 [lindex $lt [expr 2*$x]] set p2 [lindex $lt [expr 2*$x+1]] set lt [lreplace $lt [expr 2*$x] [expr 2*$x+1] [lindex $lt [expr 2*$i]] [lindex $lt [expr 2*$i+1]]] set lt [lreplace $lt [expr 2*$i] [expr 2*$i+1] $p1 $p2] } puts "[lrange $lt 0 9]" puts "$c [time {eval $tx2 tag add ${c}Tag $lt} 10]" puts "" } return } Init AddTag exit