[#45318] Windows コマンドプロンプトで UTF-8を出力するには — Yuumi Yoshida <yuumi3@...>

おつかれさまです、 Yuumi3です。

11 messages 2008/08/08

[ruby-list:45437] Re: Dir[] with **/

From: "NARUSE, Yui" <naruse@...>
Date: 2008-08-30 03:23:24 UTC
List: ruby-list #45437
成瀬です。

Nobuhiro IMAI wrote:
>> 手元の環境で
>> * Dir["/usr"].entries
>> * Dir["/usr"].entries.sort
>> * Dir["/usr"].entries.sort{|a,b|b<=>a}
>> を Ruby 1.8.7 と Ruby 1.9 で試してみたのですが、
>> Ruby 1.8 のブロック版が28秒な以外は、どれも 16から18秒くらいで、
>> それ以上は測定ごとの誤差に埋もれてしまうくらいでした。
> 
> Dir["/usr/**/*.rb"] ということでしょうか。

おっと、"/usr/**/*" でした。

ちなみにこんな感じ
% time ruby19 -e'p Dir["/usr/**/*"].entries.length'
289813
ruby19 -e'p Dir["/usr/**/*"].entries.length'  1.86s user 14.97s system 97% cpu 17.264 total


>> 結局、IO が遅すぎ&測定ごとにばらつきありすぎってことですかね。
>> SSD とかだと違うのかもしれませんが。
> 
> 後は GC でしょうか。マッチするファイル数にもよりますが、GC.disable し
> た方が速いようで、逆に GC.stress=true だと 1.8 では終わりそうにありま
> せんでした。
> # それは Dir.glob とは関係ないですね……

Dir.glob でどれだけ Ruby のオブジェクトを作るかによって、
GC の頻度も変わってくるので、ファイル数によっては関係なくもないかもしれません。

P.S.
SAS のマシンがあったので試してみたら速い・・・

% time ruby19 -e'p Dir["/**/*"].entries.length'
186016
ruby19 -e'p Dir["/**/*"].entries.length'  0.28s user 0.86s system 99% cpu 1.139 total


-- 
NARUSE, Yui  <naruse@airemix.jp>

In This Thread