cleanup: speed up rm_DS_Store by multithread
Before ``` $ time brew cleanup -s brew cleanup -s 0.73s user 3.52s system 58% cpu 7.297 total ``` After ``` $ time brew cleanup -s brew cleanup -s 0.69s user 2.57s system 139% cpu 2.341 total ``` Closes Homebrew/homebrew#42968. Signed-off-by: Xu Cheng <xucheng@me.com>
This commit is contained in:
parent
dc4feaf56b
commit
c4df86eb9d
@ -115,10 +115,20 @@ module Homebrew
|
||||
end
|
||||
|
||||
def rm_DS_Store
|
||||
paths = %w[Cellar Frameworks Library bin etc include lib opt sbin share var].
|
||||
map { |p| HOMEBREW_PREFIX/p }.select(&:exist?)
|
||||
args = paths.map(&:to_s) + %w[-name .DS_Store -delete]
|
||||
quiet_system "find", *args
|
||||
paths = Queue.new
|
||||
%w[Cellar Frameworks Library bin etc include lib opt sbin share var].
|
||||
map { |p| HOMEBREW_PREFIX/p }.select(&:exist?).each { |p| paths << p }
|
||||
workers = (0...Hardware::CPU.cores).map do
|
||||
Thread.new do
|
||||
begin
|
||||
while p = paths.pop(true)
|
||||
quiet_system "find", p, "-name", ".DS_Store", "-delete"
|
||||
end
|
||||
rescue ThreadError # ignore empty queue error
|
||||
end
|
||||
end
|
||||
end
|
||||
workers.map(&:join)
|
||||
end
|
||||
|
||||
def prune?(path, options={})
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user