cpuperf-0.1: naive.hs
import Text.Printf
import Process
main :: IO ()
main = do
s <- run "sysctl hw.setperf"
let old = clean s
new = if old == 100 then 0 else 100 :: Integer
run $ "sudo sysctl -w hw.setperf=" ++ show new
printf "cpu: %d -> %d\n" old new
s <- run "sysctl hw.cpuspeed"
let clock = fromIntegral (clean s) / 1000
printf "clock: %f Ghz\n" (clock :: Double)
where
clean :: String -> Integer
clean = read . init . tail . dropWhile (/='=')