bos/attoparsec — pull request #28 by tibbe (2012-11-13 21:49:12+00:00)
Title: Several performance improvements

Before:

```
benchmarking many/attoparsec/B
mean: 20.00491 us, lb 19.86680 us, ub 20.14431 us, ci 0.950
std dev: 710.5094 ns, lb 651.0607 ns, ub 779.8086 ns, ci 0.950

benchmarking many/attoparsec/BL
mean: 40.67177 us, lb 40.43789 us, ub 40.93386 us, ci 0.950
std dev: 1.266494 us, lb 1.055718 us, ub 1.794048 us, ci 0.950

benchmarking many/attoparsec/T
mean: 43.33973 us, lb 42.95290 us, ub 43.70672 us, ci 0.950
std dev: 1.941909 us, lb 1.719552 us, ub 2.224016 us, ci 0.950

benchmarking many/attoparsec/TL
mean: 66.97982 us, lb 66.54925 us, ub 67.42937 us, ci 0.950
std dev: 2.257245 us, lb 2.051026 us, ub 2.524279 us, ci 0.950

benchmarking comparison/many-vs-takeWhile/many
mean: 19.59315 us, lb 19.48259 us, ub 19.73129 us, ci 0.950
std dev: 631.6867 ns, lb 527.3441 ns, ub 837.1763 ns, ci 0.950

benchmarking comparison/many-vs-takeWhile/takeWhile
mean: 8.442806 us, lb 8.388361 us, ub 8.501926 us, ci 0.950
std dev: 292.3401 ns, lb 258.3648 ns, ub 340.5710 ns, ci 0.950

benchmarking comparison/letter-vs-isAlpha/letter
mean: 21.67086 us, lb 21.30334 us, ub 22.16671 us, ci 0.950
std dev: 2.173171 us, lb 1.712391 us, ub 2.709784 us, ci 0.950

benchmarking comparison/letter-vs-isAlpha/isAlpha
mean: 20.14533 us, lb 19.94252 us, ub 20.44372 us, ci 0.950
std dev: 1.253528 us, lb 923.6842 ns, ub 1.758581 us, ci 0.950

benchmarking takeWhile/isAlpha
mean: 52.75883 us, lb 51.91767 us, ub 53.98265 us, ci 0.950
std dev: 5.129894 us, lb 3.821188 us, ub 6.750396 us, ci 0.950

benchmarking takeWhile/isAlpha_ascii
mean: 24.24720 us, lb 23.99487 us, ub 24.65171 us, ci 0.950
std dev: 1.608380 us, lb 1.144914 us, ub 2.673716 us, ci 0.950

benchmarking takeWhile/isAlpha_iso8859_15
mean: 23.91339 us, lb 23.77337 us, ub 24.06898 us, ci 0.950
std dev: 757.8617 ns, lb 668.9589 ns, ub 864.8450 ns, ci 0.950
```

After:

```
benchmarking many/attoparsec/B
mean: 11.47260 us, lb 11.40736 us, ub 11.54319 us, ci 0.950
std dev: 348.7654 ns, lb 306.4139 ns, ub 399.5535 ns, ci 0.950

benchmarking many/attoparsec/BL
mean: 38.83931 us, lb 38.58032 us, ub 39.15746 us, ci 0.950
std dev: 1.467075 us, lb 1.237621 us, ub 1.795428 us, ci 0.950

benchmarking many/attoparsec/T
mean: 15.70970 us, lb 15.61166 us, ub 15.82071 us, ci 0.950
std dev: 536.8500 ns, lb 459.5497 ns, ub 637.9115 ns, ci 0.950

benchmarking many/attoparsec/TL
mean: 45.93397 us, lb 45.64416 us, ub 46.27954 us, ci 0.950
std dev: 1.607457 us, lb 1.358207 us, ub 1.997102 us, ci 0.950

benchmarking comparison/many-vs-takeWhile/many
mean: 11.69934 us, lb 11.61122 us, ub 11.79268 us, ci 0.950
std dev: 465.0545 ns, lb 416.2063 ns, ub 528.7103 ns, ci 0.950

benchmarking comparison/many-vs-takeWhile/takeWhile
mean: 2.633115 us, lb 2.613370 us, ub 2.656469 us, ci 0.950
std dev: 109.8191 ns, lb 93.62158 ns, ub 134.6133 ns, ci 0.950

benchmarking comparison/letter-vs-isAlpha/letter
mean: 11.47502 us, lb 11.41273 us, ub 11.54783 us, ci 0.950
std dev: 345.3210 ns, lb 295.0451 ns, ub 410.3771 ns, ci 0.950

benchmarking comparison/letter-vs-isAlpha/isAlpha
mean: 12.04283 us, lb 11.94841 us, ub 12.14313 us, ci 0.950
std dev: 498.4541 ns, lb 422.3328 ns, ub 637.4592 ns, ci 0.950

benchmarking takeWhile/isAlpha
mean: 45.58980 us, lb 45.34185 us, ub 45.90754 us, ci 0.950
std dev: 1.430517 us, lb 1.182215 us, ub 1.946455 us, ci 0.950

benchmarking takeWhile/isAlpha_ascii
mean: 17.67420 us, lb 17.57016 us, ub 17.79726 us, ci 0.950
std dev: 579.9606 ns, lb 497.6205 ns, ub 720.6361 ns, ci 0.950

benchmarking takeWhile/isAlpha_iso8859_15
mean: 21.51649 us, lb 21.39775 us, ub 21.63224 us, ci 0.950
std dev: 600.6644 ns, lb 548.1916 ns, ub 672.4893 ns, ci 0.950
```