Playing with counting word frequencies (and the performance thereof) in various languages. See the full article for context and background: https://benhoyt.com/writings/count-words/
NOTE
I received dozens of pull requests when my count-words article first came out, almost to the point where I couldn't keep up with them. Thanks for all the submissions!
However, I'm not taking new submissions anymore and have archived this repository, due mainly to the amount of time I've spent on this already. The major languages are there, and many minor ones. However, I'm still open to receiving feedback -- you can either email me (via the email address on my website) or open an issue here. Thanks!
To run the benchmarks
To run the tests and benchmarks (you'll need Go, Rust, Python 3, AWK and perhaps other tools installed). Only tested on Linux:
./test.sh
./benchmark.py
For the latest results (run on my machine against these versions), see the article's performance results section.
Credits
Thanks to these contributors for additional language versions:
- Bash: Jesse Hathaway - not included in benchmarks as it takes over 2 minutes
- C#: John Taylor, Yuriy Ostapenko and Osman Turan
- C# (LINQ): Osman Turan - not run in benchmarks
- C++ optimized version: Jussi Pakkanen, Adev, Nathan Myers
- Common Lisp: Brad Svercl
- Crystal: Andrea Manzini
- D: Ross Lonstein
- F#: Yuriy Ostapenko
- Go: Miguel Angel - simplifying the Go optimized version; Joshua Corbin - adding a parallel Go version for demonstration
- Haskell: Adrien Glauser
- Java: Iulian Pleșoianu
- JavaScript: Dani Biró and Flo Hinze
- Julia: Alessandro Melis
- Kotlin: Kazik Pogoda
- Lua: Flemming Madsen
- Nim: csterritt and euantorano
- OCaml: doesntgolf
- Pascal: Osman Turan
- Perl: Charles Randall
- PHP: Max Semenik
- Ruby: Bill Mill, with input from Niklas
- Rust: Andrew Gallant
- Swift: Daniel Müllenborn
- Tcl: William Ross
- Zig: ifreund and matu3ba and ansingh
See other versions on Rosetta Code.