新井です。

>>> From: nagai / dumbo.ai.kyutech.ac.jp
>>> Date: 21 Jan 2000 13:25:19 +0900
>>> Subject: [ruby-list:20309] Re: Ruby/Tk multi interpreter

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

> 単に wish と立ち上げるのと ruby -rtk -e 'Tk.mainloop' とでは
> どうでしょうか?
> Ruby/Tk だと,ライブラリの読み込みに時間がかかっているのかもしれません.

やっぱり、Tk.mainloopは関係ありませんでした。素のままでこう
いう結果でした(Tk.mainloopを削って、timeしました。最初からや
れって- -;)

real    1m6.260s
user    1m1.710s
sys     0m1.380s

がーん、1分もかかってた。

tk.rbの読み込みだけだと

$ time ruby -rtk -e ''

real    0m4.530s
user    0m3.700s
sys     0m0.430s

でした。

で、調べて一番重そうな部分にprofileを実行してみました。
# 全体にprofileを実行すると、
# /usr/local/lib/ruby/1.4/tk.rb:730:in `_eval': can't read "v00000": no such variable (RuntimeError)
# といって怒られた。はて?rescueされない...

  %   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
  1.98   450.85     12.60     2164     5.82     5.82  wm.respond_to?
  1.93   463.17     12.32      177    69.59   200.28  #<TkRoot:0x571df8>.install_cmd
  1.73   474.20     11.03      135    81.73   928.15  TkObject#configure
  1.67   484.85     10.65     2163     4.92     4.92  String#to_s
  1.65   495.37     10.52        9  1168.52  3657.41  main.require
  1.60   505.57     10.20      143    71.33   970.75  TkObject#method_missing

この部分だけを実行したときの時間は以下ですが

real    0m13.570s
user    0m12.280s
sys     0m0.720s

TkComm#_get_eval_string()をCで定義すると、

real    0m11.440s
user    0m9.670s
sys     0m0.740s

となりました。スクリプト全体(上と同じような処理が4つぐらいあ
る)だと、

real    0m41.190s
user    0m38.450s
sys     0m1.220s

でした(が、動作が変だったのでどっかバグってたよう)。

いろいろいじって、わけがわからなくなったのでまた後日。

--
新井康司 (Koji Arai)