
Journal Journal: Python isn't fast enough. No, really, it isn't. 1
People constantly say "Python is fast enough! If it's too slow, just throw hardware at the problem! GUI applications spend all their time waiting for user input anyway! And you can rewrite performance-critical sections in C!"
So why is it that, running Fedora on my netbook, I can tell -- with 99% accuracy -- which programs are written in C/C++ and which are written in Python?
There's a simple test. If, when I launch the program, nothing happens for up to a minute, then it's probably written in Python. If, when I click on a button in the program, it becomes completely unresponsive for up to five minutes before anything happens, then it's definitely written in Python.
Today's culprit is the SELinux Administration program. Unbelievably, mind-blowingly slow and unresponsive. This is not a good user experience. I don't care how much programmer time was saved by writing it in Python, or how beautiful the code is, or even how well it performed on the developer's high-end desktop monster -- what I care about is how much of my time is being wasted by twiddling my thumbs while this under-performing, over-rated slug of a language chugs away doing simple things inefficiently.
It's 2010. The future of computing is small, low-powered devices, optimised for portability and endurance rather than raw execution speed. I can't throw hardware at this problem. If Fedora wants to be widespread, it simply can't afford to go on like this, getting slower and slower as more and more core functionality is replaced with fundamentally slow code. It's time to start thinking about execution efficiency again, and -- in the absence of a high-performance Python interpreter -- that means Python is simply not an appropriate language for implementing core OS functionality like system configuration tools. If rewriting bottlenecks in C is good enough, then someone needs to start doing that, because right now they clearly aren't.