2016-06-23 2 views
0

Я пытаюсь создать рабочий процесс, который использует массив из содержимого конкретной папки, однако папка имеет более 150 тыс. Содержимого и, следовательно, процесс выполняется очень медленно, в настоящее время я используя метод 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 надеюсь, что это поможет

Смежные вопросы