[#37249] ruby 1.8でのCGI#[]の挙動 — 堀川 久 <vzw00011@...>

こんにちは。

14 messages 2003/03/09

[#37283] 両方の式とも常に評価する論理和・論理積 — Shinya Kawaji <kawaji@...>

かわじ、です

17 messages 2003/03/13

[#37324] optparse は使いやすいですか? — 成島 寛則 <narushima@...>

こんにちは。Narushima Hironori と申します。

13 messages 2003/03/15

[#37370] Secure「ではない」script の書き方 — satoru takahashi <hisai@...>

高橋聡@JFプロジェクトで翻訳しています、です

50 messages 2003/03/20
[#37381] Re: Secure「ではない」script の書き方 — satoru takahashi <hisai@...> 2003/03/20

高橋聡です

[#37382] Re: Secure「ではない」script の書き方 — matz@... (Yukihiro Matsumoto) 2003/03/20

まつもと ゆきひろです

[#37405] Re: Secure「ではない」script の書き方 — Taku Nakajima <tnakajima@...> 2003/03/24

[#37407] Re: Secure「ではない」script の書き方 — matz@... (Yukihiro Matsumoto) 2003/03/24

まつもと ゆきひろです

[#37414] Re: Secure「ではない」script の書き方 — Taku Nakajima <tnakajima@...> 2003/03/25

[#37415] Re: Secure「ではない」script の書き方 — matz@... (Yukihiro Matsumoto) 2003/03/25

まつもと ゆきひろです

[#37417] Re: Secure「ではない」script の書き方 — Taku Nakajima <tnakajima@...> 2003/03/25

[#37421] Tmpfile.newがデフォルトで/tmpを利用すること — Tadatoshi Kamimura <kamimura.tadatoshi@...>

上村と申します。はじめまして。

35 messages 2003/03/26
[#37422] Re: Tmpfile.newがデフォルトで/tmpを利用すること — WATANABE Hirofumi <eban@...> 2003/03/26

わたなべです。

[#37467] Re: Tmpfile.newがデフォルトで/tmpを利用すること — Tadatoshi Kamimura <kamimura.tadatoshi@...> 2003/03/31

上村です

[#37468] Re: Tmpfile.newがデフォルトで/tmpを利用すること — "Akinori MUSHA" <knu@...> 2003/03/31

At Mon, 31 Mar 2003 09:51:27 +0900,

[#37470] Re: Tmpfile.newがデフォルトで/tmpを利用すること — Tadatoshi Kamimura <kamimura.tadatoshi@...> 2003/03/31

上村です。

[#37472] Re: Tmpfile.newがデフォルトで/tmpを利用すること — "Akinori MUSHA" <knu@...> 2003/03/31

 なるほど、 $SAFE=1 のところをすっぱり読み飛ばしてました。

[#37479] Re: Tmpfile.new がデフォルトで/tmpを利用すること — siena@... (Siena. / SHINAGAWA, Norihide) 2003/03/31

Siena. です。

[#37480] Re: Tmpfile.new がデフォルトで/tmpを利用すること — siena@... (Siena. / SHINAGAWA, Norihide) 2003/03/31

Siena. です。

[#37483] Re: Tmpfile.newがデフォルトで/tmpを利用すること — nobu.nakada@... 2003/04/01

なかだです。

[#37493] Re: Tmpfile.newがデフォルトで/tmpを利用すること — TAKAISHI Hayato <rio-t@...> 2003/04/02

こんにちは、高石です。

[#37496] Re: Tmpfile.new がデフォルトで/tmpを利用すること — siena@... (Siena. / SHINAGAWA, Norihide) 2003/04/03

Siena. です。

[#37499] Re: Tmpfile.new がデフォルトで/tmpを利用すること — matz@... (Yukihiro Matsumoto) 2003/04/03

まつもと ゆきひろです

[#37500] Re: Tmpfile.new がデフォルトで/tmpを利用すること — "U.Nakamura" <usa@...> 2003/04/03

こんにちは、なかむら(う)です。

[ruby-list:37299] Re: 両方の式とも常に評価する論理和・論理積

From: UENO Katsuhiro <unnie@...>
Date: 2003-03-13 11:18:25 UTC
List: ruby-list #37299
うえのです。

On Thu, 13 Mar 2003 16:16:08 +0900
Shinya Kawaji <kawaji@hoppeta.com> wrote:

> わたなべさんの「正規表現を一つにまとめる」も含めて、ベンチマークを
> 取ってみました。(ありがとうございます>わたなべさん)
snip..
> なぜか、「ローカル変数を使う」が最速です。
> 何回かやってみると、「正規表現をまとめる」が最速のこともありますが、
> まさか「ローカル変数を使う」が「戻り値を考慮しない」よりも
> 速いとは思ってみませんでした。
> (ベンチマークの取り方が間違っているんでしょうか?)

おそらく、$~ を格納する場所をパース時に作る(ローカル変数を使用する方法)
か、実行時に作るか(正規表現を一つにまとめる)で差が出ているのでは
ないでしょうか。


> あくまでも現在の実装に限った話ですし、最速こそが全てではないのですが、
> 自分の思いこみで「これが速いはずだ」と思っていたのが、全然違うと
> いうことに気付きました。

今の Ruby の実装では、スクリプトからは直接見えないところで
インタプリタがオブジェクトを生成したりメモリを確保したりする場合が
結構あり、スクリプトの世界だけでパフォーマンスを推測していると
実際にベンチマークを取ってみたら思っていたほど速くなかった、という
結果になることが多々あります。


ちなみに、僕が Ruby スクリプトの実行速度をチューンするときは
現時点では基本的には次のような点を意識してます。

  1. オブジェクト生成やメモリアロケーションの回数を減らす
     (GCの回数も減る)
  2. メモリコピーの回数を減らす (部分文字列や破壊的メソッドに注意)
  3. 構文木のノードの数を減らす (丸括弧を使わない等)
  4. メソッド呼び出しの回数を減らす
  5. 定数・グローバル変数・インスタンス変数を参照する回数を減らす
  6. できるだけ C言語で書かれているコードを実行する
     (バックトラックの少ない正規表現に詰め込む等)

# xmlscan を書くときはこういうことばっかり考えてるわけです ;p

しかし、こういう小手先のテクで改善できるのはほんの僅かなので、
余程のことがない限りは可読性や保守性を優先したほうが良いです。

# と自戒してみる :)


 --  ----  -     - - -- -
うえの かつひろ <unnie@blue.sky.or.jp>

In This Thread