on 0.2 help sign in
text/tests/Bench.hs
171 lines 6.0 kB history raw
1import BenchUtils
2import System.Mem
3import Control.Concurrent
4import Data.Char
5import System.CPUTime
6import System.IO
7import System.IO.Unsafe
8import Text.Printf
9import Control.Exception
11import qualified Data.Text as T
12import qualified Data.Text.Encoding as E
13import Data.Text.Internal
14import qualified Data.Text.Fusion as S
16import qualified Data.List as L
17import qualified Data.ByteString.Char8 as B
18import qualified Data.ByteString as B8
19import Data.ByteString (ByteString)
20import Data.Word
21import qualified System.IO.UTF8 as UTF8
23main = do ascii_bs <- B.readFile "text/test/ascii.txt"
24 let ascii_txt = E.decodeASCII ascii_bs
25 let ascii_str = T.unpack ascii_txt
26 force (ascii_txt,ascii_str,ascii_bs)
27 printf " # Text\t\tString\tByteString\n"
28 run 1 (ascii_txt,ascii_str,ascii_bs) ascii_tests
31ascii_tests = [
32 ("cons",
33 [F (app1 (T.cons '\88')),
34 F (app2 ((:) '\88') ),
35 F (app3 (B8.cons 88) )]),
36 ("head",
37 [F (app1 T.head),
38 F (app2 L.head),
39 F (app3 B.head)]),
40 ("last",
41 [F (app1 T.last),
42 F (app2 L.last),
43 F (app3 B.last)]),
44 ("tail",
45 [F (app1 T.tail),
46 F (app2 L.tail),
47 F (app3 B.tail)]),
48 ("init",
49 [F (app1 T.init),
50 Flist (app2 L.init),
51 F (app3 B.init) ]),
52 ("null",
53 [F (app1 T.null),
54 F (app2 L.null),
55 F (app3 B.null) ]),
56 ("length",
57 [F (app1 T.length),
58 F (app2 L.length),
59 F (app3 B.length)]),
60 ("map",
61 [F (app1 $ T.map succ),
62 Flist (app2 (L.map succ)),
63 F (app3 $ B.map succ)]),
64 ("filter",
65 [F $ app1 $ T.filter (/= '\101'),
66 Flist $ app2 $ L.filter (/= '\101'),
67 F $ app3 $ B8.filter (/= 101)]),
68 ("foldl'",
69 [F (app1 $ T.foldl' (\a w -> a+1::Int) 0),
70 F (app2 $ L.foldl' (\a w -> a+1::Int) 0),
71 F (app3 $ B.foldl' (\a w -> a+1::Int) 0)
72 ]),
73 ("drop",
74 [F (app1 $ T.drop 30000000),
75 Flist (app2 $ L.drop 30000000),
76 F (app3 $ B.drop 30000000)
77 ]),
78 ("take",
79 [F (app1 $ T.take 30000000),
80 Flist (app2 $ L.take 30000000),
81 F (app3 $ B.take 30000000)]),
82 ("words",
83 [F (app1 $ T.words),
84 Flist (app2 $ L.words),
85 F (app3 $ B.words)])
86 ]
88bmp_tests = [
89 ("cons",
90 [F (app1 (T.cons '\88')),
91 F (app2 ((:) '\88') )]),
92 ("head",
93 [F (app1 T.head),
94 F (app2 L.head)]),
95 ("last",
96 [F (app1 T.last),
97 F (app2 L.last)]),
98 ("tail",
99 [F (app1 T.tail),
100 F (app2 L.tail)]),
101 ("init",
102 [F (app1 T.init),
103 Flist (app2 L.init)]),
104 ("null",
105 [F (app1 T.null),
106 F (app2 L.null),
107 F (app3 B.null)]),
108 ("length",
109 [F (app1 T.length),
110 F (app2 L.length),
111 F (app3 B.length)]),
112 ("map",
113 [F (app1 $ T.map succ),
114 Flist (app2 (L.map succ))]),
115 ("filter",
116 [F $ app1 $ T.filter (/= '\101'),
117 Flist $ app2 $ L.filter (/= '\101')]),
118 ("foldl'",
119 [F (app1 $ T.foldl' (\a w -> a+1::Int) 0),
120 F (app2 $ L.foldl' (\a w -> a+1::Int) 0)]),
121 ("drop",
122 [F (app1 $ T.drop 30000000),
123 Flist (app2 $ L.drop 30000000)]),
124 ("take",
125 [F (app1 $ T.take 30000000),
126 Flist (app2 $ L.take 30000000)]),
127 ("words",
128 [F (app1 $ T.words),
129 Flist (app2 $ L.words)])
130 ]
132smp_sip_tests = [
133 ("cons",
134 [F (app1 (T.cons '\65624')),
135 F (app2 ((:) '\65624'))]),
136 ("head",
137 [F (app1 T.head),
138 F (app2 L.head)]),
139 ("last",
140 [F (app1 T.last),
141 F (app2 L.last)]),
142 ("tail",
143 [F (app1 T.tail),
144 F (app2 L.tail)]),
145 ("init",
146 [F (app1 T.init),
147 Flist (app2 L.init)]),
148 ("null",
149 [F (app1 T.null),
150 F (app2 L.null),
151 F (app3 B.null) ]),
152 ("length",
153 [F (app1 T.length ),
154 F (app2 L.length),
155 F (app3 B.length)]),
156 ("map",
157 [F (app1 $ T.map succ),
158 Flist (app2 (L.map succ))]),
159 ("filter",
160 [F $ app1 $ T.filter (/= '\65624'),
161 Flist $ app2 $ L.filter (/= '\65624')]),
162 ("foldl'",
163 [F (app1 $ T.foldl' (\a w -> a+1::Int) 0),
164 F (app2 $ L.foldl' (\a w -> a+1::Int) 0)]),
165 ("drop",
166 [F (app1 $ T.drop 30000000),
167 Flist (app2 $ L.drop 30000000)]),
168 ("take",
169 [F (app1 $ T.take 30000000),
170 Flist (app2 $ L.take 30000000)])
171 ]