Making R run Fast - Jan Vitek
John O'Neill3 HN recommenders · recommended in 3 months, 2017-2023
860 views · 10 years ago · talk · evergreen
Jan Vitek of Northeastern University gives a meetup talk on the challenges of making the R language run fast. He explains what in R's semantics makes it hard to optimize and to build a JIT compiler for.
HN points to it as the best explanation of why R is so hard to optimize, often paired with talks on Python and used to explain what makes Julia fast.
59:11How to Speed up a Python Program 114,000 times.
InfoQ
171K views • 13 years ago
2:50:14Simple Code, High Performance
Molly Rocket
463K views • 5 years ago
1:02:44Chris Seaton @ VMSS16: JRuby+Truffle: Why it’s Important to Optimise the Tricky Parts
softdevteamuk
5K views • 10 years ago
13:45A 10x faster TypeScript
Microsoft Developer
608K views • 1 year ago
1:01:37Compiling and Optimizing Scripting Languages
Google TechTalks
21K views • 17 years ago
52:54Rust at speed — building a fast concurrent database
Jon Gjengset
225K views • 7 years ago
1:00:40Dmitry Vyukov — Go scheduler: Implementing language with lightweight concurrency
Hydra
47K views • 7 years ago
47:52Parsing JSON Really Quickly: Lessons Learned
InfoQ
86K views • 6 years ago
1:02:17'Fastware' - Andrei Alexandrescu [ ACCU 2016 ]
ACCU Conference
34K views • 10 years ago
1:15:09Cliff Click @ VMSS16: Bits of Advice For the VM Writer
softdevteamuk
4K views • 10 years ago
22:41"Clean" Code, Horrible Performance
Molly Rocket
1.2M views • 3 years ago
1:04:48"Performance (Really) Matters" with Emery Berger
Association for Computing Machinery (ACM)
7K views • 6 years ago
1:32:47Data-Oriented Demo: SOA, composition
Jonathan Blow
201K views • 11 years ago
46:10Understanding the Python GIL
David Beazley
127K views • 14 years ago
34:55"Outperforming Imperative with Pure Functional Languages" by Richard Feldman
Strange Loop Conference
98K views • 5 years ago
42:44Armin Ronacher - A Python for Future Generations
EuroPython Conference
6K views • 9 years ago
50:11Twitter’s Quest for a Wholly Graal Runtime by Chris Thalinger
Scala Days Conferences
3K views • 8 years ago
1:33:022013 Keynote: Chandler Carruth: Optimizing the Emergent Structures of C++
CppNow
34K views • 13 years ago
52:40Keynote. Professor Steven G. Johnson | JuliaCon 2019
The Julia Programming Language
18K views • 7 years ago
43:20Zig Roadmap 2023 - Andrew Kelley
Zig SHOWTIME
77K views • 4 years ago
4 comments from Hacker News
This is disregarding the development of said ecosystems though. The point is that Python has been quite inhibitory to the development of this ecosystem. There are many corpses of automatic differentiation libraries (starting from autograd and tangent and then to things like theano to finally tensorflow and pytorch) and many corpses of JIT compilers and accelerators (Cython, Numba, pypy, and TensorFlow XLA, now PyTorch v2's JIT, etc.). What has been found over the last decade is that a large part of that is due to the design of the languages. Jan Vitek for example has a great talk which describes how difficult it is to write a JIT compiler for R due to certain design choices in the language ( link , or the more detailed version ▶ this video ). There are certain language constructs that void lots of optimizations which have to then be worked around, which is why Python JITs choose subsets of the language to avoid specific parts that are not easy to optimize or not possible to optimize. This is why each take a domain-specific subset, a different subset of the language for numba vs jax vs etc., to choose something that is nice for ML vs for more generic codes. With all of that, it's perfectly reasonable to point out that there have been languages which have been designed to not have the compilation difficulties, which have resulted having a single (JIT) compiler for the language. And by extension, it has made building machine learning and autodiff libraries not something that's a Go
I recommend watching this video - Making R run fast ▶ this video It's a little disappointing, because the conclusion is that R will probably never "run fast", but very interesting nonetheless.
Perhaps the best way to understand what makes Julia fast is to watch these two videos about Python and R and what makes them so hard to optimize: link ▶ this video Take everything mentioned in these videos that make Python and R really hard to optimize and don't do those things :D
Another talk on the difficulty of optimising R is this fantastic one by Jan Vitek: ▶ this video Also, my favourite R trick: foo <- function() {rm(foo, envir=environment(foo))}