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
|
end
|
||||||
|
|
||||||
def rm_DS_Store
|
def rm_DS_Store
|
||||||
paths = %w[Cellar Frameworks Library bin etc include lib opt sbin share var].
|
paths = Queue.new
|
||||||
map { |p| HOMEBREW_PREFIX/p }.select(&:exist?)
|
%w[Cellar Frameworks Library bin etc include lib opt sbin share var].
|
||||||
args = paths.map(&:to_s) + %w[-name .DS_Store -delete]
|
map { |p| HOMEBREW_PREFIX/p }.select(&:exist?).each { |p| paths << p }
|
||||||
quiet_system "find", *args
|
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
|
end
|
||||||
|
|
||||||
def prune?(path, options={})
|
def prune?(path, options={})
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user