packages feed

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"