2016-06-23 6 views
0

特定のフォルダの内容の配列を使用するワークフローを作成しようとしていますが、フォルダの内容が150,000を超えているためプロセスが非常に遅いです。 Dir.entriesメソッドを使用して配列を作成しますが、時間を大幅に短縮する必要があります。大きなフォルダの内容から素早く配列を作成する

は、ここに私の現在のコードです:

Dir.entries('directory/to/search') 

これシンプルでわかりやすいが、非常に高速ではありません。

答えて

0

あなただけのあなたのようなUNIXレベルのコマンドを使用することができ、指定したパスの下にあるすべてのディレクトリ+ファイルの名前を検索したい場合は、次の方法より速くあり

path = 'directory/to/search' 
`ls #{path}`.split("\n") 

# . directory has 30 entries in this example 
Benchmark.measure { Dir.entries('.') } 
=> #<Benchmark::Tms:0x007fe6ab92aee8 @label="", @real=7.675203960388899e-05, @cstime=0.0, @cutime=0.0, @stime=0.0, @utime=0.0, @total=0.0> 

Benchmark.measure { `ls`.split("\n") } 
=> #<Benchmark::Tms:0x007fe6ab8f9a50 @label="", @real=0.00298881100025028, @cstime=0.0, @cutime=0.0, @stime=0.0, @utime=0.0, @total=0.0> 

I助けて欲しいと思っています。

関連する問題