ulid-0.3.0.0: bench/Main.hs
module Main where
import Data.ULID
import Control.DeepSeq
import Control.Monad (replicateM)
import Data.Text as T
import Data.Text.IO as T
import Data.Text.Format.Numbers as FN
import Data.Time.Clock.POSIX as PX
formatTN :: Int -> Text
formatTN =
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
T.putStr $ formatTN $ round opsPerSec
T.putStrLn " op/s generate"