on master help sign in
Optimise UUID V4 generation

This results in a ~3x performance boost (on i7-3770 / Linux/x86_64) Before ====== benchmarking generation/V4-stock time 13.23 μs (12.52 μs .. 14.17 μs) 0.976 R² (0.966 R² .. 0.990 R²) mean 13.14 μs (12.76 μs .. 13.66 μs) std dev 1.486 μs (1.112 μs .. 1.870 μs) ---- After ===== benchmarking generation/V4-stock time 4.054 μs (4.046 μs .. 4.060 μs) 1.000 R² (1.000 R² .. 1.000 R²) mean 4.050 μs (4.045 μs .. 4.055 μs) std dev 15.96 ns (13.94 ns .. 18.75 ns)

commita5076830b445bc9ed87c5c8554ee086b50eedabe authorHerbert Valerio Riedel <hvr@gnu.org> dateSat 17 Dec 2016, 19:47 (10 years ago) parent3be19b1
2 files changed+2−3
uuid/Data/UUID/V4.hs+1−1 uuid/uuid.cabal+1−2
uuid/Data/UUID/V4.hs+1−1
@@ -23,7 +23,7 @@ module Data.UUID.V4 (nextRandom) where
2323import Data.UUID
2424import Data.UUID.Types.Internal ( buildFromBytes )
2525
26−import Crypto.Random.Entropy ( getEntropy )
26+import System.Entropy ( getEntropy )
2727import Data.ByteString ( unpack )
2828
2929-- | Generate a random UUID. Introduced in version 1.2.6.
uuid/uuid.cabal+1−2
@@ -34,8 +34,7 @@ Library
3434 bytestring >= 0.10 && < 0.11,
3535 cryptohash-sha1 >= 0.11.100 && < 0.12,
3636 cryptohash-md5 >= 0.11.100 && < 0.12,
37− cryptonite >= 0.1 && < 0.21,
38− memory >= 0.2 && < 0.14,
37+ entropy >= 0.3.7 && < 0.4,
3938 network-info == 0.2.*,
4039 random >= 1.0.1 && < 1.2,
4140 time >= 1.1 && < 1.8,