[#46340] ASR 1.8.7 同梱の exerb で生成したプログラムが enumerator を見つけられない — "(株)ネットフォレスト 植田裕之" <ueda@...>

植田と申します。

10 messages 2009/09/01
[#46344] Re: ASR 1.8.7 同梱の exerb で生成したプログラムが enumerator を見つけられない — arton <artonx@...> 2009/09/01

artonです。

[#46345] Re: ASR 1.8.7 同梱の exerb で生成したプログラムが enumerator を見つけられない — "NARUSE, Yui" <naruse@...> 2009/09/01

成瀬です。

[ruby-list:46378] 最も低コストの方法は?

From: 大田黒俊夫 <toshio.otaguro@...>
Date: 2009-09-11 13:27:11 UTC
List: ruby-list #46378
質問です.
文字列を要素とする配列 r0 があったとします.この配列の要素が全て空の場合を調べたいのですが,
以下の3つのいずれの方法が最もコスト(メモリ,マシンサイクル)がかからないでしょうか?
また,これら以外にさらに低コストの方法がありますか?なお, r0 の要素数は事前にはわからず,
またこの処理はあるループの中で多数回繰り返されるとします.

(1) オブジェクト生成・比較にコストがかかる?

empty_array = Array.new(r0.size, "")
if (r0 == empty_array)
  # 必要な処理
end

(2) 構文は単純だが,Array#uniq はHash を使うと思われるので高コスト?

if (r0.uniq == [""])
    # 必要な処理
end

(3) 最も低コストに思えるが?コーディングが煩雑

allempty = 0
r0.each { |x| break if ( (allempty += (x.empty? ? 0 : 1)) > 0 ) }
if (allempty == 0)
    # 必要な処理
end

どなたかご教示お願いいたします.

-- 
俊(とし)
* 望湖庵日記 http://griffin.cocolog-nifty.com/lakesidedairy/

In This Thread

Prev Next