packages feed

ulid-0.2.0.0: bench/Main.hs

module Main where

import           Data.ULID

import           Control.DeepSeq
import           Control.Monad            (replicateM)
import qualified Data.Text                as T
import qualified Data.Text.Format.Numbers as FN
import qualified Data.Time.Clock.POSIX    as PX

formatTN = T.unpack . (FN.prettyI (Just ','))

main :: IO ()
main = do
    -- Run many iterations of getULID
    let ops = 100000
    begin <- PX.getPOSIXTime
    ulids <- replicateM ops (getULID >>= return.force)
    end <- PX.getPOSIXTime
    let elapsed = end - begin
    let opsPerSec = (fromIntegral ops) / (realToFrac elapsed) :: Double
    putStr $ formatTN (round opsPerSec)
    putStrLn " op/s generate"