Cache calls to sysctl_bool at the source
This commit is contained in:
parent
3c3bd76528
commit
f172413a26
@ -104,36 +104,39 @@ module MacCPUs
|
|||||||
end
|
end
|
||||||
|
|
||||||
def altivec?
|
def altivec?
|
||||||
@altivec ||= sysctl_bool('hw.optional.altivec')
|
sysctl_bool('hw.optional.altivec')
|
||||||
end
|
end
|
||||||
|
|
||||||
def avx?
|
def avx?
|
||||||
@avx ||= sysctl_bool('hw.optional.avx1_0')
|
sysctl_bool('hw.optional.avx1_0')
|
||||||
end
|
end
|
||||||
|
|
||||||
def sse3?
|
def sse3?
|
||||||
@sse3 ||= sysctl_bool('hw.optional.sse3')
|
sysctl_bool('hw.optional.sse3')
|
||||||
end
|
end
|
||||||
|
|
||||||
def ssse3?
|
def ssse3?
|
||||||
@ssse3 ||= sysctl_bool('hw.optional.supplementalsse3')
|
sysctl_bool('hw.optional.supplementalsse3')
|
||||||
end
|
end
|
||||||
|
|
||||||
def sse4?
|
def sse4?
|
||||||
@sse4 ||= sysctl_bool('hw.optional.sse4_1')
|
sysctl_bool('hw.optional.sse4_1')
|
||||||
end
|
end
|
||||||
|
|
||||||
def sse4_2?
|
def sse4_2?
|
||||||
@sse4 ||= sysctl_bool('hw.optional.sse4_2')
|
sysctl_bool('hw.optional.sse4_2')
|
||||||
end
|
end
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
|
||||||
def sysctl_bool(property)
|
def sysctl_bool(property)
|
||||||
|
(@properties ||= {}).fetch(property) do
|
||||||
result = nil
|
result = nil
|
||||||
IO.popen("/usr/sbin/sysctl -n #{property} 2>/dev/null") do |f|
|
IO.popen("/usr/sbin/sysctl -n '#{property}' 2>/dev/null") do |f|
|
||||||
result = f.gets.to_i # should be 0 or 1
|
result = f.gets.to_i # should be 0 or 1
|
||||||
end
|
end
|
||||||
$?.success? && result == 1 # sysctl call succeded and printed 1
|
# sysctl call succeded and printed 1
|
||||||
|
@properties[property] = $?.success? && result == 1
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user