●●●●TCL/TKなら俺に聞け 2●●●●at TECH
●●●●TCL/TKなら俺に聞け 2●●●● - 暇つぶし2ch925:デフォルトの名無しさん
12/12/24 22:46:13.42
ついにTcl/Tk 8.6が12/20にリリースされました。

926:デフォルトの名無しさん
12/12/26 21:31:39.97
SL4AでTcl動かそうと思ったけど、うまくいかんな。つまらん

927:デフォルトの名無しさん
13/01/18 03:10:56.99
ubuntuが出すタブレットPCでも動くのかな?

928:デフォルトの名無しさん
13/01/21 19:38:03.19
ActiveTcl 8.6.0.0リリースだよ。

929:デフォルトの名無しさん
13/02/19 07:16:05.65
特定のwidgetだけ再描画することは出来ないでしょうか?
textに数千行読む時にprogressbarを更新したいけど、その他の再描画は無駄なので止めたいのです。
updateだと全体を再描画になります。

930:デフォルトの名無しさん
13/02/21 22:20:12.72
特定widgetだけ再描画する方法は分からないけど、
textへの追加を1行ずつしないで、全部を一旦変数に入れて一発でinsertする、じゃダメなの?

931:デフォルトの名無しさん
13/02/22 21:07:25.94
C:\Program Files\Tcl\demos\Tk8.5\widget.tcl
Scales and Progress Bars 4. Progress bar
はupdate なし
configure命令

932:デフォルトの名無しさん
13/02/23 21:44:59.02
Tkの部品はconfig命令を使うと色や形の現在値は変更できるが、Tkは高速化の為に画面への反映は遅延表示させているので途中経過を表示せずにいきなり最終結果が表示されたりする。
プロバー表示では現在値を強制表示させる為にupdate命令を使うのが定石だがこれが禁じ手になると結構難しいか。

①930番さんの様にまとめて一発表示
②update命令間隔をを10秒置きとか極端に長くする
③その他の部品はforgetオプション等で退避しておいて後で表示
④?
ところでTkのtext表示は普通はそんなに遅くはないが改行文字なしの長い行を表示させると異様に遅くなるみたい。

933:デフォルトの名無しさん
13/03/06 21:36:21.62
SSD環境なので参考にならんかもしれませんが、2000文字x5000行のファイルでは、
5行おきのアップデートにすると秒単位で高速化されました。
それでもプログレスバー表示しない場合の11.5倍時間がかかりました。

create_file: 483288 microseconds per iteration
gets_lines: 271409 microseconds per iteration
read_bulk: 252275 microseconds per iteration

test_full_update: 5123759 microseconds per iteration
test_skip_update: 3374500 microseconds per iteration
test_no_update: 291779 microseconds per iteration
test_bulk_insert: 285029 microseconds per iteration

934:デフォルトの名無しさん
13/03/09 03:48:33.45
最初にファイルサイズ取得して、サイズに応じてupdateする行数変更するとか。
5000行のファイルに5行おきにプログレスバーを更新するってのが...

935:デフォルトの名無しさん
13/03/12 17:51:41.39
tcl8.6爆速なんだけど↓からだいぶ状況変わったの?
URLリンク(d.hatena.ne.jp)
この速さはただの再帰もループになってる?

5桁とかになると1分以上かかって他に大きく離される
これはループにしても変わらないから多倍長ライブラリの性能かな

936:デフォルトの名無しさん
13/03/12 18:29:56.59
すまん関数名同じだからかんちがいした
fib 38は固まるわ

937:デフォルトの名無しさん
13/03/12 22:01:59.60
>935
私の中古機械で試してみた。式をまとめると約10倍速くなった
どうしてこんなに違うのか??
fib <39088169> term <80312600 microseconds per iteration>
proc fib {n} {
if {$n < 2} { return $n }
return [expr {[fib [expr {$n - 1}]] +[fib [expr {$n - 2}]]}]
}

fib <39088169> term <714145387 microseconds per iteration>
proc fib {n} {
if {$n < 2} { return $n }
set a [expr $n - 2]
set b [expr $n - 1]
set x [fib $a]
set y [fib $b]
return [expr $x + $y]
}

938:デフォルトの名無しさん
13/03/15 22:54:42.21
>>937
exprの引数を{ }で囲むだけでだいぶ違うな

939:デフォルトの名無しさん
13/03/15 23:06:47.65
初心者が初心者に嘘を教えるスレです

940:デフォルトの名無しさん
13/03/15 23:08:30.06
exprの引数を{ }で囲むのは8.6以前からの定石。
2回評価させないようにする。

941:デフォルトの名無しさん
13/03/23 22:06:55.05
937です。より速くより汚く
proc fib {n} {
if {$n < 2} { return $n }
return [expr {[fib [incr n -2]] +[fib [incr n ]]}]
}
fib <39088169> term <72891401 microseconds per iteration> でした。

935 引用のページからC++を複写してVisualC++Express2008(要するに無料ソフト)を使って実行してみた
fib44=701408733
fib45=1134903170
fib46=1836311903
fib47=-1323752223
fib48=512559680

tcl/tk(ver8.5.13)でfib47 は
fib <2971215073> term <1253824233 microseconds per iteration>
1254秒!!。鈍足で正確でした。なっとく

速度、精度、価格、安直さ、どれも一つの側面でしかなく、それらを総合的に評価して最適ソフトを選択することが肝要だと思う。

942:929
13/03/24 10:09:02.93
ありがとうございます。規制されてて遅くなりました。
progressbarはupdate idletasksで表示が更新されましたが、古いPCのWindowsXPでは5~6秒程度updateしないと
メニュー部分が白くなって、その後はprogressbarも更新されなくなります。(update idletasksではダメ)
ということで、数秒おきにupdateしないとprogressbarが更新されません。
見た目を重視しているので無駄はあきらめることにしました。

943:デフォルトの名無しさん
13/03/31 08:08:41.45
Tcl/Tk 8.4.20予告 6/1(随分さきの話だが)に最終版リリース予定らしい。まだ8.4.を改良してたのか。
Tcl/Tk 8.4.20 Release Announcement
June 1, 2013

The Tcl Core Team is pleased to announce the 8.4.20 releases of the Tcl
dynamic language and the Tk toolkit. This is the twentieth and *FINAL*
patch release of Tcl/Tk 8.4. With this release, support for Tcl/Tk 8.4
comes to an end.

944:デフォルトの名無しさん
13/04/03 22:36:01.28
Tcl/Tk 8.5.14 Release Announcement
April 3, 2013

945:デフォルトの名無しさん
13/04/09 21:46:20.56
>>5の予想を裏切り2014年まで持つ勢いだが、
ActiveTcl 8.6.1.0とTclDevKit 6.0の登場が変えてくれることを願う。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch