From 7fbfb02625cb979ec3a82ff3bf04f8efcf6e1ace Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Thu, 18 Apr 2019 14:46:40 +0900 Subject: [PATCH] Remove usage of Thread.new I benchmarked these both locally and neither use of `Thread.new` provides any measurable speedup (and in the `readall` case appears to slow things down) on my 8 core machine. --- Library/Homebrew/cleanup.rb | 26 +------------------------- Library/Homebrew/readall.rb | 17 +++-------------- 2 files changed, 4 insertions(+), 39 deletions(-) diff --git a/Library/Homebrew/cleanup.rb b/Library/Homebrew/cleanup.rb index 5a9e870ef3..55943cd914 100644 --- a/Library/Homebrew/cleanup.rb +++ b/Library/Homebrew/cleanup.rb @@ -8,30 +8,6 @@ CLEANUP_DEFAULT_DAYS = 30 CLEANUP_MAX_AGE_DAYS = 120 module CleanupRefinement - refine Enumerator do - def parallel - queue = Queue.new - - each do |element| - queue.enq(element) - end - - workers = (0...Hardware::CPU.cores).map do - Thread.new do - Kernel.loop do - begin - yield queue.deq(true) - rescue ThreadError - break # if queue is empty - end - end - end - end - - workers.each(&:join) - end - end - refine Pathname do def incomplete? extname.end_with?(".incomplete") @@ -403,7 +379,7 @@ module Homebrew HOMEBREW_PREFIX/"Caskroom", ] end - dirs.select(&:directory?).each.parallel do |dir| + dirs.select(&:directory?).each do |dir| system_command "find", args: [dir, "-name", ".DS_Store", "-delete"], print_stderr: false diff --git a/Library/Homebrew/readall.rb b/Library/Homebrew/readall.rb index d5d3add6e2..de1ece8d63 100644 --- a/Library/Homebrew/readall.rb +++ b/Library/Homebrew/readall.rb @@ -3,22 +3,11 @@ require "formula" module Readall class << self def valid_ruby_syntax?(ruby_files) - ruby_files_queue = Queue.new - ruby_files.each { |f| ruby_files_queue << f } failed = false - workers = (0...Hardware::CPU.cores).map do - Thread.new do - Kernel.loop do - begin - # As a side effect, print syntax errors/warnings to `$stderr`. - failed = true if syntax_errors_or_warnings?(ruby_files_queue.deq(true)) - rescue ThreadError - break - end - end - end + ruby_files.each do |ruby_file| + # As a side effect, print syntax errors/warnings to `$stderr`. + failed = true if syntax_errors_or_warnings?(ruby_file) end - workers.each(&:join) !failed end