
IronPython vs cPython benchmarks - iamelgringo
http://ironpython.codeplex.com/wikipage?title=IP26FinalVsCPy26Perf&referringTitle=IronPython%20Performance
======
itgoon
Well, it was pretty lopsided, but there were some things that IPy was pretty
good at. Exceptions are much more efficient, there were some bright spots in
dictionary and string manipulation.

Given that CPython is about Python, whereas IronPython is about Python and the
MS environment (libraries, IIS, MSSQL, etc.), it looks like a decent
alternative if you like Python, or are just tired of C#.

~~~
gjm11
I think you've got that exactly backwards. IronPython is much _slower_ than
CPython at exception handling and somewhat slower with strings, but very good
at, e.g., simple arithmetic operations. (Presumably the JIT turns them into
reasonably nice native code.) It's somewhat faster than CPython on PyStone and
quite a lot slower on the Richards benchmark. It takes substantially longer to
run the whole PyBench suite than CPython, but that's entirely accounted for by
its rotten performance with exceptions.

~~~
jules
Interesting that IronPython is faster than CPython at processing exception
handlers when no exception is thrown, but much slower at throwing.

~~~
torial
I remember when FePy was first coming out, and Jim Hugunin was encountering
considerable slowness in regard to exceptions, and he conferred with Guido
about it because the fail-first idiom is a preferred python strategy. Anyways,
Guido was like, you are functionally equivalent so it doesn't matter. (I'm
just regurgitating my rough memory of Jim's blog about it.) But that was also
the first time I learned how disruptive an exception was to .Net program flow.
I've also seen it in general with other .Net languages -- exceptions kill
performance, and defensive programming is very worth the extra effort.

------
po
Can someone please remind me why interpreter startup time matters? Maybe it's
because I originally came from Java-land. I really don't get it.

~~~
bad_user
It matters in some contexts.

For quick scripts that you invoke from the console, it's painful to wait a
couple of seconds just to see if it does something.

For web servers, if you're using something like Google's App Engine which
starts VM instances as needed, or stops them when there's no traffic, users
have experienced what is called a "loading requests" ... which is basically a
very slow request or requests throwing DeadlineExceededExceptions.

That's because the startup time of the runtime is very slow, especially when
you have big dependencies like JRuby ... see this blog post for instance ...
[http://googleappengine.blogspot.com/2009/12/request-
performa...](http://googleappengine.blogspot.com/2009/12/request-performance-
in-java.html)

------
scorpioxy
At the day job, they run an all-MS-windows environment. So i use IronPython to
write administration scripts for the database and to do some calculation or
migrate datasets or things like that.

It is definitely slow, but I am willing to deal with that because Python as a
language shines with such tasks.(or any dynamic language I guess)

~~~
smort
IP is great for that. you might want to check out PowerShell as well:
<http://en.wikipedia.org/wiki/Windows_PowerShell>

------
bad_user
Last time I tried IronPython (~ 2 months ago) it was painfully slow ... slower
than Jython which is really discouraging since they've put some effort into
this for quite some time now (also hiring Jim Hugunin, the lead Jython dev).

------
scottyang
What about memory consumption? What's the maximum memory CPython or IronPython
would use to run through one of the benchmarks?

