Ready for review: new std.uni
Dmitry Olshansky
dmitry.olsh at gmail.com
Fri Jan 11 12:57:54 PST 2013
12-Jan-2013 00:38, David Nadlinger пишет:
> On Friday, 11 January 2013 at 19:31:13 UTC, Dmitry Olshansky wrote:
>> The code, including extra tests and a benchmark is here:
>> https://github.com/blackwhale/gsoc-bench-2012
>
> Phew, that repository is quite a hefty checkout with all the example data.
>
> Just for the fun of it, a completely irreproducible, unscientific
> benchmark (sorry, Andrei!) run on a Core i7 M 620 under Linux x86_64:
>
> DMD 2.061
> ---
> $ rdmd -O -release -noboundscheck -inline char_class.d
[snip]
I'd rather use dewiki or arwiki these give the more coverage otherwise
you just check the presence of ASCII special casing (only isAlpha and
isWhite have it).
> Time to build dchar array: 2702 ms
>
> Baselines
> noop [enwiki], 217.335, 888.99 M/s
> new-std-alpha [enwiki], 1197.49, 161.34 M/s
> new-std-mark [enwiki], 6374.73, 30.31 M/s
> new-std-num [enwiki], 6290.89, 30.71 M/s
> new-std-sym [enwiki], 6500.93, 29.72 M/s
> new-std-white [enwiki], 822.245, 234.98 M/s
> combining class [enwiki], 5948.63, 32.48 M/s
> inv-alpha [enwiki], 10290, 18.78 M/s
> inv-mark [enwiki], 9229.2, 20.93 M/s
> inv-num [enwiki], 9046.48, 21.36 M/s
> inv-sym [enwiki], 9843.59, 19.63 M/s
>
> Tries of level 1
> trie-alpha [enwiki], 2179.17, 88.66 M/s
> trie-mark [enwiki], 1912.54, 101.02 M/s
> trie-num [enwiki], 1924.92, 100.37 M/s
> trie-sym [enwiki], 1911.22, 101.09 M/s
>
> Tries of level 2
> trie-alpha [enwiki], 4524.33, 42.70 M/s
> trie-mark [enwiki], 4276.92, 45.17 M/s
> trie-num [enwiki], 4308.42, 44.84 M/s
> trie-sym [enwiki], 4298.68, 44.95 M/s
>
> Tries of level 3
> trie-alpha [enwiki], 6407.64, 30.15 M/s
> trie-mark [enwiki], 6150.8, 31.41 M/s
> trie-num [enwiki], 6095.96, 31.69 M/s
> trie-sym [enwiki], 6253.7, 30.89 M/s
>
> Tries of level 4
> trie-alpha [enwiki], 8329.66, 23.20 M/s
> trie-mark [enwiki], 7993.11, 24.17 M/s
> trie-num [enwiki], 8040.94, 24.03 M/s
> trie-sym [enwiki], 8033.07, 24.05 M/s
> ---
> LDC (2.061 merge branch):
> ---
> $ rdmd --compiler=ldmd2 -O3 -release -noboundscheck -inline char_class.d
> enwiki-latest-all-titles-in-ns0
[snip]
> Baselines
> noop [enwiki], 211.516, 913.44 M/s
> new-std-alpha [enwiki], 612.324, 315.53 M/s
> new-std-mark [enwiki], 577.134, 334.77 M/s
> new-std-num [enwiki], 600.996, 321.48 M/s
> new-std-sym [enwiki], 577.433, 334.60 M/s
> new-std-white [enwiki], 381.535, 506.40 M/s
> combining class [enwiki], 517.231, 373.54 M/s
> inv-alpha [enwiki], 8181.25, 23.62 M/s
> inv-mark [enwiki], 6938.09, 27.85 M/s
> inv-num [enwiki], 6347.71, 30.44 M/s
> inv-sym [enwiki], 6930.7, 27.88 M/s
>
> Tries of level 1
> trie-alpha [enwiki], 275.741, 700.69 M/s
> trie-mark [enwiki], 274.972, 702.65 M/s
> trie-num [enwiki], 274.558, 703.70 M/s
> trie-sym [enwiki], 277.255, 696.86 M/s
>
> Tries of level 2
> trie-alpha [enwiki], 453.453, 426.08 M/s
> trie-mark [enwiki], 452.912, 426.59 M/s
> trie-num [enwiki], 455.004, 424.63 M/s
> trie-sym [enwiki], 453.492, 426.04 M/s
>
> Tries of level 3
> trie-alpha [enwiki], 577.442, 334.59 M/s
> trie-mark [enwiki], 579.054, 333.66 M/s
> trie-num [enwiki], 577.95, 334.30 M/s
> trie-sym [enwiki], 577.566, 334.52 M/s
>
> Tries of level 4
> trie-alpha [enwiki], 778.261, 248.26 M/s
> trie-mark [enwiki], 778.943, 248.04 M/s
> trie-num [enwiki], 778.352, 248.23 M/s
> trie-sym [enwiki], 779.442, 247.88 M/s
> ---
>
> Haven't had a look at what is going on there yet – it could well be that
> some measurement loop is optimized out altogether.
>
You can print total counts after each bench, there is a TLS varaible
written at the end of it. But anyway I like your numbers! :)
> David
--
Dmitry Olshansky
More information about the Digitalmars-d
mailing list