5 ms·
Unladen Swallow can now compile all Python code to native code using LLVM
- jnoller 17y agoI'm very happy the unladen-swallow team is making progress like this. Collin and Jeffery have done a fantastic job.
- jmtulloss 17y agoI agree. I think that unladen-swallow has the potential to be a groundbreaking project not only for Python, but for all dynamic languages.
- sparky 17y agoIt's impressive that they were able to beat 2009Q1 even by using LLVM naively. Looks like their first few releases are the software analog of Intel's tick-tock strategy (http://en.wikipedia.org/wiki/Intel_Tick-Tock http://en.wikipedia.org/wiki/Intel_Tick-Tock), and it looks like we're in for a hell of a 'tock' in 3 months. Keep up the good work guys!
- roder 17y agoGreat to see they are making progress, sucks about the memory. I'm really looking forward to the day this gets merged back into the core python distribution.
- jhawk28 17y agoLooks like some good performance increases. Seems to have a memory hit. That will be looked at next release.
- thorax 17y agoI desperately want to see benchmark comparisons with psyco. There are some applications where psyco does a great job and the second this beats that my excitement level will go through the roof. As it stands, I'm already very excited about this.
- callahad 17y agoThis is secondhand information, but apparently at the PyCon VM Summit this year the Unladen Swallow guys mentioned that they were already faster than Psyco for Youtube's workload.
- jnoller 17y agoTismer is working on a new version of psyco; so I'll be interested to see how that comes out. That being said, psyco is only good for certain workloads (math heavy, for example). Unladen's goals are more "real workload" oriented, so don't expect targeted math speedups.
- tl 17y agoShouldn't there be max along with min and avg? Std dev is higher in many cases. Could there be an issue where max (worst case) has worse performance in Unladen Swallow?
- kragen 17y agoI don't know if this is the case here, but often in benchmarking, "min" is the real answer of how fast something is going, and any time on top of that is some kind of overhead that you weren't trying to measure — some other process was taking up CPU time, you had to page in part of libc, crap like that. "avg" serves to tell you whether that overhead was reasonably small, or whether you need to run your tests again (on a quieter machine, say) to get a smaller "min". This depends on the assumption that what you're measuring is actually a deterministic process. There are cases where it's not; as an example, the Self papers have all kinds of moaning about the measurement imprecision caused by physically-mapped direct-mapped caches without OS page coloring, but with more than one page of cache, on old SPARCs. For any particular logical→physical mapping, your measurements would be reproducible, but when it changed (if you got paged out and back in, or if you restarted the virtual machine in a new process) you would get different results.
- imbaczek 17y agomax is useless in benchmarking; there's no upper limit on how long any computation can take.
- kragen 17y agoIf that were true, real-time software would be impossible. (Unless you're talking about the risk of your hardware malfunctioning, I guess.) Practically speaking, max can be useful.
- stefano 17y agoI'd like to see how it compares to Self and SBCL.
- 0wned 17y agoI Love Python and would use it more if it were easier to build stand-alone, compiled native apps from it (I used Python many years before the phrase 'Web 2.0' came about). I use pyinstaller right now and have use py2exe in the past to build native, end-client distributal code, but now I just use C++ for those cases.
- icey 17y agoUnfortunately I don't know how much this will help. I think LLVM will add like 7mb to any python exe distribution.
- nopassrecover 17y ago7mb doesn't seem too bad in this age of fast net and big hard drives as compared to the inconvenience of what other method you get Python running on an end-user system.
- oconnor0 17y agoI used to agree, but then I went to central eastern Africa (Burundi). 7mb takes a long time to download on a 3kbps connection. I'm not so sure now. There's a long tail of people with slow connections & small hard drives. I guess this issue is whether or not you care about supporting them.
- ShabbyDoo 17y agoA huge percentage of the Python code out there is server-side stuff. So, if you only have a 3kbit connection at your disposal, you're probably not going to have much luck deploying your application either.
- oconnor0 17y agoFor server-side, no. And it seemed like the discussion was about distrubuting client-side apps written in Python using Unladen Swallow.