[#20083] non-block IO with TCPSocket — dn <daisuke@...>

初投稿の中村と申します。よろしくお願いします。

19 messages 2000/01/06
[#20084] Re: non-block IO with TCPSocket — Tomoyuki Kosimizu <greentea@...2.so-net.ne.jp> 2000/01/06

越水です。

[#20091] Re: non-block IO with TCPSocket — とみたまさひろ <tommy@...> 2000/01/06

とみたです。

[#20133] おききしたーいでーす — akimaru <akimaru@...>

17 messages 2000/01/09
[#20138] Re: おききしたーいでーす — akimaru <akimaru@...> 2000/01/09

[#20237] Ruby/Tk multi interpreter — nagai@...

永井@知能.九工大です.

21 messages 2000/01/17
[#20242] Re: Ruby/Tk multi interpreter — nagai@... 2000/01/17

永井@知能.九工大です.

[#20248] Re: Ruby/Tk multi interpreter — Hideto ISHIBASHI <s34204@...> 2000/01/17

石橋秀仁です。

[#20254] Re: Ruby/Tk multi interpreter — nagai@... 2000/01/18

永井@知能.九工大です.

[#20271] Re: Ruby/Tk multi interpreter — Hideto ISHIBASHI <s34204@...> 2000/01/18

石橋秀仁です。

[#20249] FTP.open err for Windows95 — "Y Kataoka" <kataoka@...>

初めまして、片岡@KLUGと申します。

18 messages 2000/01/17
[#20252] Re: FTP.open err for Windows95 — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/01/18

なひです.

[#20342] How to build ruby(current) with cygwin — KORIYAMA Naohiro <kory@...2.so-net.ne.jp>

はじめまして、こおりやまです。

19 messages 2000/01/23
[#20362] Re: How to build ruby(current) with cygwin — WATANABE Hirofumi <Hirofumi.Watanabe@...> 2000/01/24

わたなべです.

[#20422] Re: How to build ruby(current) with cygwin — Masaki Suketa<CQN02273@...> 2000/01/29

Win32OLE の作者の助田です.

[#20394] ruby-1.4.3 port to HPUX 11.00 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

15 messages 2000/01/26

[ruby-list:20386] Re: Ruby/Tk multi interpreter

From: Koji Arai <JCA02266@...>
Date: 2000-01-25 15:16:24 UTC
List: ruby-list #20386
新井です。

>>> From: Koji Arai <JCA02266@nifty.ne.jp>
>>> Date: 24 Jan 2000 23:10:51 +0900
>>> Subject: [ruby-list:20364] Re: Ruby/Tk multi interpreter

> 新井です。

> で、調べて一番重そうな部分にprofileを実行してみました。

良く見ると、TkObject#bind (_bind_core)の実行回数が極端に多かったです。

>   %   cumulative   self              self     total
>  time   seconds   seconds    calls  ms/call  ms/call  name
>  35.68   227.15    227.15     2167   104.82   161.13  #<TkRoot:0x571df8>._get_eval_string
>  11.21   298.52     71.37    10770     6.63     6.85  String#==
>   7.25   344.65     46.13      562    82.09   800.42  #<TkRoot:0x571df8>.tk_call
>   7.18   390.37     45.72     7123     6.42     6.42  wm.kind_of?
>   5.30   424.13     33.77      562    60.08   681.23  Array#filter
>   2.22   438.25     14.12      173    81.60  1257.23  #<TkRoot:0x571df8>._bind_core

[ruby-dev:8905]で永井さんに作ってもらったTkBindCore でクラス
にbindするようにスクリプトを修正すればかなり改善されそうです。

ちなみに、自宅のLinuxだと処理全体の実行時間は

o 修正前

real    0m4.540s
user    0m3.380s
sys     0m0.180s

# うっマシンの差が歴然としてる(10倍以上 - -;)

o 修正後

real    0m2.848s
user    0m1.990s
sys     0m0.190s

でした。結構期待できそうです。

おまけで、ささやかながら最後のパッチを付けるとString#==、
kind_of?や、respond_to?の実行回数がかなり減ります。

real    0m2.795s
user    0m1.990s
sys     0m0.150s

以下が最終的なprofileです。明日あたり会社の鈍亀マシンでも試
して見ます。

  %   cumulative   self              self     total
 time   seconds   seconds    calls  ms/call  ms/call  name
 24.13     6.62      6.62     1527     4.33     6.42  Tk._get_eval_string
 12.52    10.05      3.43      402     8.54    40.75  Tk.tk_call
  8.75    12.45      2.40     3693     0.65     0.77  String#==
  6.44    14.22      1.77      402     4.39    28.73  Array#filter
  4.26    15.38      1.17        9   129.63   538.89  main.require
  4.01    16.48      1.10      135     8.15    55.31  TkObject#configure
  4.01    17.58      1.10      201     5.47    97.35  Object#initialize
  2.61    18.30      0.72     1523     0.47     0.47  String#to_s


--- /usr/local/lib/ruby/1.4/tk.rb	Wed Jan 19 22:41:54 2000
+++ tk.rb	Tue Jan 25 22:54:43 2000
@@ -196,7 +196,9 @@ module TkComm
 
   def _get_eval_string(str)
     return nil if str == None
-    if str.kind_of?(Hash)
+    if str.kind_of?(String)
+      str = str.to_s
+    elsif str.kind_of?(Hash)
       str = hash_kv(str).join(" ")
     elsif str.kind_of?(Array)
       str = array2tk_list(str)

--
新井康司 (Koji Arai)

In This Thread