[#47861] ruby1.9.2 ruby-debug19-0.11.6.gem のローカルインストール — eiichi_maekawa@...

20 messages 2011/02/10
[#47874] Re: ruby1.9.2 ruby-debug19-0.11.6.gem のローカルインストール — eiichi_maekawa@... 2011/02/15

前川です。

[#47875] Re: ruby1.9.2 ruby-debug19-0.11.6.gem のローカルインストール — OZAWA Sakuro <sakuro@2238club.org> 2011/02/15

さくです。

[#47876] Re: ruby1.9.2 ruby-debug19-0.11.6.gem のローカルインストール — eiichi_maekawa@... 2011/02/15

[#47877] Re: ruby1.9.2 ruby-debug19-0.11.6.gem のローカルインストール — OZAWA Sakuro <sakuro@2238club.org> 2011/02/15

さくです。

[#47878] Re: ruby1.9.2 ruby-debug19-0.11.6.gem のローカルインストール — Kenta Murata <muraken@...> 2011/02/15

むらたです。

[ruby-list:47862] リテラルの式展開の速度?

From: 俊(とし) <toshio.otaguro@...>
Date: 2011-02-11 04:35:16 UTC
List: ruby-list #47862
初心者ですが、要望があって投稿します。

正規表現で繰り返し使用するリテラルを変数または定数の中に格納しておき、それを #{...}
で展開して使用したいのですが、この式展開はあまり速くないように見えます。例えば、

n = 1000000
C0 = '\s\|\s'
line0 = "abc | 123"

time0 = Time.now()
for i in 0..(n-1)
  /\s\|\s/ =~ line0
end
time1 = Time.now()

time2 = Time.now()
for i in 0..(n-1)
  /#{C0}/ =~ line0
end
time3 = Time.now()

$stderr.print (time1 - time0), "\n"
$stderr.print (time3 - time2), "\n"

というコードを走らせると、最初のループと次のループの実効速度には一桁以上の差が見られます。変数のリテラル展開は毎回変数の評価が必要なので、しかたがないと思うのですが、定数はスクリプトのコンパイル時に評価できるはずなので、直接リテラルを記述するのと同程度にできるのでは?と思います。

初心者の思い違いかも知れませんが、将来改善していただけると大変ありがたく思います。

-- 
俊(とし)

In This Thread

Prev Next