3 ms·
Dynamically-typed languages can be fast when run with a jit -- for example, Lua+luajit is close to Go in your microbenchmark. On my computer, for n=40, Go is 0m
by dilap 14y ago
Dynamically-typed languages can be fast when run with a jit -- for example, Lua+luajit is close to Go in your microbenchmark. On my computer, for n=40, Go is 0m2.156s and luajit is 0m3.199s.
- wting 14y ago"Fast" and "close" are subjective terms. That's a 50% increase for a few thousand function calls. PyPy uses JIT to improve Python run time speeds but it's still magnitudes slower than statically typed languages. I've upped n to 40 and rerun with the following languages: C: 0.38s Java: 0.55s Go: 0.90s Rust: 1.29s LuaJit: 2.19s Haskell: 8.97s PyPy: 10.06s Lua: 22.87s Ruby: 22.13s Python2: 43.88s Python3: 66.28s All code is available in the previous mentioned gist: https://gist.github.com/wting/77c9742fa1169179235f https://gist.github.com/wting/77c9742fa1169179235f
- cygwin98 14y agoCan't imagine Ruby is twice as fast as Python 2 and three times as fast as Python 3 right now. Can you share your code in a gist?
- smosher 14y agoI'm curious what times you get with an iterative version, or at least using a LUT. As-is, this mostly benchmarks the stack (admittedly that is an interesting datapoint.)
- dilap 14y agoThanks for the extra results. Obviously, a single micro-benchmark will only take you so far (and something like the Computer Language Shootout gets you farther -- it's a shame and mystifying (to me) that that site no longer has results for LuaJIT...). But anyway, in my (limited) experimentations with LuaJIT, it's often been within a factor of 2x-3x of speed of C, which to me is pretty fast, and typical of many statically-typed, compiled languages.
- dilap 14y agoI don't know if anyone will ever read this thread again :), but just in case, the the current front-page post on Julia provides another nice example of a fast, dynamically-typed, JITed language (within 1-2x of C, from their own set of benchmarks).