on master help sign in
added a benchmark for comparison of UUIDs
560df8faslatter
tests/BenchUUID.hs+60−1
@@ -4,6 +4,7 @@ import Criterion.Main
4import Data.Char (ord)
4import Data.Char (ord)
5import Data.Maybe (fromJust)
5import Data.Maybe (fromJust)
6import Data.Word
6import Data.Word
7+import qualified Data.Set as Set
7import qualified Data.ByteString.Lazy as BL
8import qualified Data.ByteString.Lazy as BL
8import qualified Data.ByteString.Lazy.Internal as BL
9import qualified Data.ByteString.Lazy.Internal as BL
9import qualified Data.UUID as U
10import qualified Data.UUID as U
@@ -48,9 +49,67 @@ main = do
48 bench "V1" $ nfIO U.nextUUID,
49 bench "V1" $ nfIO U.nextUUID,
49 bench "V4" $ nfIO (randomIO :: IO U.UUID),
50 bench "V4" $ nfIO (randomIO :: IO U.UUID),
50 bench "V5" $ nf (U.generateNamed U.namespaceURL) n1
51 bench "V5" $ nf (U.generateNamed U.namespaceURL) n1
51− ]
52+ ],
53+ bench "set making" $ nf Set.fromList uuids
52 ]
54 ]
53
55
56+-- 50 uuids, so tests can be repeatable
57+uuids :: [U.UUID]
58+uuids
59+ = map (fromJust . U.fromString)
60+ [
61+ "35d42593-1fca-4465-b588-a2e78cb996ba",
62+ "1e97e407-eca7-4c5d-a947-6fbe9dc168b6",
63+ "a41fd7ce-a053-4c0a-a742-77c95b85da2a",
64+ "f7e3913a-0fd7-4355-a92f-d73f9b046efa",
65+ "8961a35d-55c2-42f3-8680-08fce3986647",
66+ "96246c58-d0b4-4e56-a543-356bd59686a9",
67+ "72c46194-648c-4b1e-a9fb-2eba060ab43b",
68+ "0fc252d4-a37b-4eca-9309-e3d2a59a3a22",
69+ "a8aceb5a-6a8e-43f3-85bb-9653a3c1ebcd",
70+ "b23d1118-6bc8-4add-9d56-99634d78949f",
71+ "5f8c7896-9c4f-4d7e-a4d2-961bda298012",
72+ "219a4137-7bc5-42b1-ac95-490948a978e1",
73+ "5af5024f-fbe9-45ab-991d-49b655994437",
74+ "569dfb33-185d-4a3c-99c4-bc2b83250a7c",
75+ "43a58442-aa51-4a5d-8e00-b8a83b5fc5b0",
76+ "2865ced1-b54d-4725-8f01-b408f4617424",
77+ "b8cfaff0-4dee-4f32-af2f-0469b3e535fc",
78+ "63f45bc0-f303-4f1a-b0d6-76f876be626d",
79+ "d171eaf3-f20d-45d6-9268-0cc22dfbe887",
80+ "7c28f457-ad27-494a-8642-6e47e7f3efb8",
81+ "f8de9193-66ff-49e8-9826-fc50858d7855",
82+ "2af85f28-cace-4740-b8bb-2b5860f5fdb3",
83+ "b12a7a22-edb3-4694-b8f4-0532eaad6112",
84+ "5e052a08-8e49-4668-bbe7-77cdbc4679a3",
85+ "42d5a68d-3f08-4e39-9b8c-71cc17c538ed",
86+ "ba2b1487-b3a4-4a19-98cc-59530f36613f",
87+ "e4a5c569-b8ac-4851-8ad2-fbdb89986be2",
88+ "35b4a1b6-b5ca-4646-803b-c337ee730d9a",
89+ "f0df1206-05d9-49d6-a726-d49fb253e645",
90+ "9656a0f0-89b2-4cec-bb1c-fdf5633e1cd7",
91+ "d13382f5-04a1-422d-94d6-e47219425816",
92+ "b8d0c762-4c6b-4bd0-ad0b-f68988a87166",
93+ "06360e85-f18a-44f6-aa72-45f1e60b6b77",
94+ "347491ca-62b3-48e8-ac94-6ffebe1318ed",
95+ "014339d0-7b2d-4dda-914b-14ee5cb4391b",
96+ "dc57931b-4744-41be-b3c4-e24dbeeb606a",
97+ "2c9fdcf0-e1d6-4a2d-951d-4766b99032cb",
98+ "b6bde422-eea8-4231-bf1c-ee0e56699511",
99+ "921073c5-f7c1-4583-ac03-aeb7aef8662b",
100+ "eff6a517-aeb1-453e-9810-1b4b324c5a1e",
101+ "eadaae8c-cbf8-4e0b-ab80-e34284b07dad",
102+ "4d307c36-70d9-453f-8455-ec7e2ba405ed",
103+ "53ddef9a-2413-4f7f-8363-cff56ee17c6c",
104+ "4dd4c27a-b300-4a00-ab87-eef505275492",
105+ "4a5d7001-f0c1-4e2f-8362-8833bda2114b",
106+ "0c46f438-9365-406a-b04e-34436806ec25",
107+ "b35469cf-05f8-40ff-a38b-117604347957",
108+ "f1c54df0-5f59-4891-b3c6-82bac0d814ca",
109+ "8091837c-6456-42c3-a686-f4731a41d4f9",
110+ "2a0e2efb-a11c-4a44-81ee-3efc37379b48"
111+ ]
112+
54#if !(MIN_VERSION_criterion(0,4,0))
113#if !(MIN_VERSION_criterion(0,4,0))
55nf f arg = B ( rnf . f) arg
114nf f arg = B ( rnf . f) arg
56whnf f arg = B f arg
115whnf f arg = B f arg
uuid.cabal+1−1
@@ -49,7 +49,7 @@ Executable benchuuid
49 If flag(test)
49 If flag(test)
50 Buildable: True
50 Buildable: True
51 Build-Depends: random, binary, bytestring, Crypto, maccatcher,
51 Build-Depends: random, binary, bytestring, Crypto, maccatcher,
52− time, base >=3, base < 5,
52+ time, base >=3, base < 5, containers,
53 criterion >= 0.3 && < 0.5, parallel >= 2.1 && < 2.3
53 criterion >= 0.3 && < 0.5, parallel >= 2.1 && < 2.3
54 Else
54 Else
55 Buildable: False
55 Buildable: False