CommunityNews

CommunityNews

Performance comparison: counting words in Python, Go, C++, C, Awk, Forth, Rust

Summary: I describe a simple interview problem (counting frequencies of unique words), solve it in various languages, and compare performance across them. For each language, I’ve included a simple, idiomatic solution as well as a more optimized approach via profiling…

Language Simple Optimized Notes
grep 0.04 0.04 grep baseline; optimized sets LC_ALL=C
wc -w 0.29 0.20 wc baseline; optimized sets LC_ALL=C
Zig 0.54 by ifreund and matu3ba
Nim 0.76 0.58 by csterritt and euantorano
C 0.97 0.23
Go 1.14 0.39
Crystal 1.29 by Andrea Manzini
PHP 1.36 by Max Semenik
Rust 1.43 0.38 by Andrew Gallant
C# 1.51 0.82 by J Taylor, Y Ostapenko, O Turan
OCaml 1.72 by Nate Dobbins and Pavlo Khrystenko
C++ 1.73 0.42 optimized by Jussi Pakkanen
Perl 1.81 by Charles Randall
F# 1.82 1.59 by Yuriy Ostapenko
Kotlin 1.86 by Kazik Pogoda
Python 2.07 1.30
Lua 2.50 1.97 by themadsens; runs under luajit
JavaScript 2.52 1.90 by Dani Biro and Flo Hinze
Ruby 3.13 2.43 by Bill Mill
AWK 3.55 1.13 optimized uses mawk
D 4.16 1.01 by Ross Lonstein
Swift 4.23 by Daniel Muellenborn
Forth 4.26 1.46
Shell 14.60 1.85 optimized does LC_ALL=C sort -S 2G

This thread was posted by one of our members via one of our news source trackers.

Most Liked

dimitarvp

dimitarvp

Yeah, right, as if. They just use bridges to C libraries underneath.

It’s tempting to think your favourite language is fast. But very often it’s just the stdlib shelling out to native implementations. Erlang does it too.

Exadra37

Exadra37

Thanks for the post :slight_smile:

It’s missing Elixir… just saying :grin:

dimitarvp

dimitarvp

PHP faster than Rust and C++?!

Nice joke. :flushed::grinning_face_with_smiling_eyes:

Where Next?

Popular Backend topics Top

dimitarvp
Apparently he decided to live-stream how he’s going to create a semver library.
New
tomekzawada
Greetings from Membrane Framework team! Check out our case study based on our latest projects at Software Mansion. https://blog.swmansi...
New
New
ErlangSolutions
Interested in a blazingly fast type checker with 25 years of investment, delivered on the BEAM? Check out Caramel, an exciting project fr...
New
New
paulanthonywilson
Post on using UDP multicasting with Elixir to broadcast presence, and listen for peers, on a local network. I have found this approach us...
New
First poster: Exadra37
Summary: I describe a simple interview problem (counting frequencies of unique words), solve it in various languages, and compare perform...
New
First poster: brennan
The perspective of an ignorant computer science undergrad It’s likely that you read the title of this post and thought “what is this guy ...
New
axelson
I describe how we use Hot Reloading with Webpack to develop faster and show how to integrate Webpack 5, webpack-dev-server, and Phoenix f...
New
vkatsuba
Hi folks! Ukrainian Erlanger is here :sign_of_the_horns:! I’d like to share my recent talk at the TADSummit Online Conference, where I ...
New

Other popular topics Top

PragmaticBookshelf
Write Elixir tests that you can be proud of. Dive into Elixir’s test philosophy and gain mastery over the terminology and concepts that u...
New
PragmaticBookshelf
Learn different ways of writing concurrent code in Elixir and increase your application's performance, without sacrificing scalability or...
New
New
Maartz
Hi folks, I don’t know if I saw this here but, here’s a new programming language, called Roc Reminds me a bit of Elm and thus Haskell. ...
New
DevotionGeo
I have always used antique keyboards like Cherry MX 1800 or Cherry MX 8100 and almost always have modified the switches in some way, like...
New
hilfordjames
There appears to have been an update that has changed the terminology for what has previously been known as the Taskbar Overflow - this h...
New
First poster: AstonJ
Jan | Rethink the Computer. Jan turns your computer into an AI machine by running LLMs locally on your computer. It’s a privacy-focus, l...
New
AstonJ
Curious what kind of results others are getting, I think actually prefer the 7B model to the 32B model, not only is it faster but the qua...
New
Fl4m3Ph03n1x
Background Lately I am in a quest to find a good quality TTS ai generation tool to run locally in order to create audio for some videos I...
New
PragmaticBookshelf
Use advanced functional programming principles, practical Domain-Driven Design techniques, and production-ready Elixir code to build scal...
New