From f172413a26cca0003fffca7a51f5530242f2faa4 Mon Sep 17 00:00:00 2001 From: Jack Nagel Date: Tue, 26 Nov 2013 20:23:19 -0600 Subject: [PATCH] Cache calls to sysctl_bool at the source --- Library/Homebrew/os/mac/hardware.rb | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/Library/Homebrew/os/mac/hardware.rb b/Library/Homebrew/os/mac/hardware.rb index 4cd8eb775d..dec4126a6a 100644 --- a/Library/Homebrew/os/mac/hardware.rb +++ b/Library/Homebrew/os/mac/hardware.rb @@ -104,36 +104,39 @@ module MacCPUs end def altivec? - @altivec ||= sysctl_bool('hw.optional.altivec') + sysctl_bool('hw.optional.altivec') end def avx? - @avx ||= sysctl_bool('hw.optional.avx1_0') + sysctl_bool('hw.optional.avx1_0') end def sse3? - @sse3 ||= sysctl_bool('hw.optional.sse3') + sysctl_bool('hw.optional.sse3') end def ssse3? - @ssse3 ||= sysctl_bool('hw.optional.supplementalsse3') + sysctl_bool('hw.optional.supplementalsse3') end def sse4? - @sse4 ||= sysctl_bool('hw.optional.sse4_1') + sysctl_bool('hw.optional.sse4_1') end def sse4_2? - @sse4 ||= sysctl_bool('hw.optional.sse4_2') + sysctl_bool('hw.optional.sse4_2') end protected def sysctl_bool(property) - result = nil - IO.popen("/usr/sbin/sysctl -n #{property} 2>/dev/null") do |f| - result = f.gets.to_i # should be 0 or 1 + (@properties ||= {}).fetch(property) do + result = nil + IO.popen("/usr/sbin/sysctl -n '#{property}' 2>/dev/null") do |f| + result = f.gets.to_i # should be 0 or 1 + end + # sysctl call succeded and printed 1 + @properties[property] = $?.success? && result == 1 end - $?.success? && result == 1 # sysctl call succeded and printed 1 end end