Sha256: 7dc8b5ecfce8c4a8b9302d274aa38a15f05e84526e5dedcadcc53f5a7b267150

Contents?: true

Size: 1.38 KB

Versions: 220

Compression:

Stored size: 1.38 KB

Contents

{-# LANGUAGE OverloadedStrings #-}

import Frequency (frequency)

import Prelude hiding (unlines)
import Data.Text (Text, unlines)

import Criterion.Main (bench, bgroup, defaultMain, nf)
import Criterion.Types (Benchmark)
import Control.Concurrent (getNumCapabilities)
import Data.List (nub, sort, replicate)

odeAnDieFreude :: Text
odeAnDieFreude = unlines
                 [ "Freude schöner Götterfunken"
                 , "Tochter aus Elysium,"
                 , "Wir betreten feuertrunken,"
                 , "Himmlische, dein Heiligtum!"
                 , "Deine Zauber binden wieder"
                 , "Was die Mode streng geteilt;"
                 , "Alle Menschen werden Brüder,"
                 , "Wo dein sanfter Flügel weilt."
                 ]


makeBench :: [Text] -> Int -> Benchmark
makeBench anthems workers = bench name $ nf (`frequency` anthems) workers
  where name = show workers ++ " workers"

benchGroup :: Int -> [Int] -> Int -> Benchmark
benchGroup processors numWorkers numAnthems =
  bgroup (show numAnthems ++ " anthems on " ++ show processors ++ " threads") (makeBench anthems <$> numWorkers)
  where anthems = replicate numAnthems odeAnDieFreude

main :: IO ()
main = do threads <- getNumCapabilities
          let numsOfWorkers = nub $ sort [1..threads]
              numsOfAnthems = [500]

          defaultMain $ benchGroup threads numsOfWorkers <$> numsOfAnthems

Version data entries

220 entries across 220 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/haskell/exercises/parallel-letter-frequency/bench/Benchmark.hs
trackler-2.2.1.179 tracks/haskell/exercises/parallel-letter-frequency/bench/Benchmark.hs
trackler-2.2.1.178 tracks/haskell/exercises/parallel-letter-frequency/bench/Benchmark.hs
trackler-2.2.1.177 tracks/haskell/exercises/parallel-letter-frequency/bench/Benchmark.hs
trackler-2.2.1.176 tracks/haskell/exercises/parallel-letter-frequency/bench/Benchmark.hs
trackler-2.2.1.175 tracks/haskell/exercises/parallel-letter-frequency/bench/Benchmark.hs
trackler-2.2.1.174 tracks/haskell/exercises/parallel-letter-frequency/bench/Benchmark.hs
trackler-2.2.1.173 tracks/haskell/exercises/parallel-letter-frequency/bench/Benchmark.hs
trackler-2.2.1.172 tracks/haskell/exercises/parallel-letter-frequency/bench/Benchmark.hs
trackler-2.2.1.171 tracks/haskell/exercises/parallel-letter-frequency/bench/Benchmark.hs
trackler-2.2.1.170 tracks/haskell/exercises/parallel-letter-frequency/bench/Benchmark.hs
trackler-2.2.1.169 tracks/haskell/exercises/parallel-letter-frequency/bench/Benchmark.hs
trackler-2.2.1.167 tracks/haskell/exercises/parallel-letter-frequency/bench/Benchmark.hs
trackler-2.2.1.166 tracks/haskell/exercises/parallel-letter-frequency/bench/Benchmark.hs
trackler-2.2.1.165 tracks/haskell/exercises/parallel-letter-frequency/bench/Benchmark.hs
trackler-2.2.1.164 tracks/haskell/exercises/parallel-letter-frequency/bench/Benchmark.hs
trackler-2.2.1.163 tracks/haskell/exercises/parallel-letter-frequency/bench/Benchmark.hs
trackler-2.2.1.162 tracks/haskell/exercises/parallel-letter-frequency/bench/Benchmark.hs
trackler-2.2.1.161 tracks/haskell/exercises/parallel-letter-frequency/bench/Benchmark.hs
trackler-2.2.1.160 tracks/haskell/exercises/parallel-letter-frequency/bench/Benchmark.hs