I suppose you could also recreate all their examples to create your own baseline of runtime performance but that's a lot of work for what seems to be a not-very empirical benchmark (at least to me).
Disclaimer: I did not check runtime complexity of any of the implementations because I didn't really care and skipped straight to the performance results table.
https://github.com/benhoyt/countwords/blob/master/kjvbible.t...
firmament: 10
firmament, 10
genesis 10
version 10
Evaluation took:
2.798 seconds of real time
2.813069 seconds of total run time (2.677126 user, 0.135943 system)
100.54% CPU
8,125,595,437 processor cycles
934,110,048 bytes consedI'm also pretty certain the article is benchmarking against the 10x copy file for the actual benchmarks.
See this example command in the article:
time $PROGRAM <kjvbible_x10.txt >/dev/null
So, even if you had the exact same hardware, I'm pretty sure your program would only be a bit faster than the unoptimized C# version. However, it's possible that your machine is a lot slower than what's used in the article, and your program is actually pretty fast -- but without more points of comparison, we just don't know. You haven't run the other benchmark programs on your hardware and posted the results.the 64015
and 51313
of 34634
26879
to 13567
that 12784
in 12503
he 10261
shall 9838
unto 8987
for 8810
i 8708
... Evaluation took:
0.365 seconds of real time
0.370322 seconds of total run time (0.338364 user, 0.031958 system)
101.37% CPU
1,060,005,621 processor cycles
106,297,040 bytes consed
I had a bug in my original code which alphabetized rather than sorted by count, so the sort line should be:((keys (sort (alexandria:hash-table-keys map) (lambda(x y)(> (gethash x map)(gethash y map))))))