Slashdot Mirror


Parrots, Pythons And Things That Go Splat

ajs writes "As you may know, there was a contest between Dan Sugalski and Guido van Rossum over the performance of Parrot running Python byte-code, and the loser was to take a pie in the face. Well, in the end it was between Dan and time and Dan lost... he was unable to get the Python bytecode translator to work sufficiently well for the contest (it was fast, but not complete), but when Dan conceded, Guido was gracious enough to decline to throw a pie, what a sport! The Perl community, however, was not quite so gracious (they wanted to see Dan take a pie for the team), and the final event ended up being a benefit for the Perl Foundation. Meanwhile, see Dan's Blog for details on what sorts of Parrot goodness came of this."

8 of 43 comments (clear)

  1. IronPython by Hard_Code · · Score: 4, Interesting

    Huh? IronPython is even faster that the normal C impl, so I guess it was more a contest of the Parrot VM than it is php vs. python. Don't worry, I have faith Parrot will be as good as the other VMs (Java, Mono) and at least on par with, but most probably faster, than a hand-rolled php engine.

    --

    It's 10 PM. Do you know if you're un-American?
    1. Re:IronPython by Anonymous Coward · · Score: 5, Informative

      Huh? IronPython is even faster [slashdot.org] that the normal C impl, so I guess it was more a contest of the Parrot VM than it is php vs. python. Don't worry, I have faith Parrot will be as good as the other VMs (Java, Mono) and at least on par with, but most probably faster, than a hand-rolled php engine.

      Let's not jump to conclusions, everyone. While he did lose the challenge, it seems that he lost itbecause there simply wasn't enough time to implement the functionality required to run the python scripts on the Parrot interpreter. Hopefully, the parrot interpreter would win this contest if it the developers had more time. See below for a quote from the concession:

      This concludes the effort to implement the Pie-thon benchmark for
      OSCON, because there isn't any chance to implement the needed bits for
      b0.py in the remaining time.

      Four of seven benchmarks are running: b1, b2, b3, and b6. b5 is done
      partially. Three of these are faster on Parrot, but e.g. while b2.py
      is running 3 times the speed of python, it takes just 0.2s here on a
      Pentium 600, which makes it hard to say, what's faster for these test
      collection.

      The benchmarks are mainly testing the speed of builtin functions,
      which are of course mature and optimized in Python, while a lot of the
      builtins just didn't even exist in Parrot a month ago. When it comes
      to just running arithmetic code, like in b2.py, Parrot is a lot
      faster.

  2. No chance in hell by Anonymous Coward · · Score: 5, Insightful
    I have faith Parrot will be as good as the other VMs (Java, Mono)
    These languages make certain assumptions about typing and binding that Python and Perl do not. Additionally, Java's class structure is much *much* more time-efficient (though I rather like it less) than Python's memory-efficient proto-based object structure. It's the nature of the languages. It's why they're SCRIPTING languages. They traded speed for ease of coding. Which is just fine. But don't oversell them, you just look foolish.
    1. Re:No chance in hell by DylanQuixote · · Score: 5, Interesting

      it is also worth noting that scripting languages tend to have a faster startup time than java-esque languages. In general, anyway.

      On my 450mhz PII, running a simple java application takes a few seconds to start, while the equiv. perl
      or python program starts up without any noticable delay.

      And perl has to compile the program before it runs it...

      Parrot vs. JVM is going to be very interesting,
      too. JVM is a stack-based VM, while I believe Parrot is register-based (like most real machines, actually. :) and I've heard this difference might prove faster.

      Plus writting in parrot asm is fun!

  3. Re:Both slower than Java tho... by Dan+Ost · · Score: 4, Interesting

    But in my experience PythonC runs my benchmarks at just over 1/10 the speed of HotSpot.

    Is that before or after you turn on psyco?

    --

    *sigh* back to work...
  4. Registers versus Stacks by chromatic · · Score: 5, Interesting

    Parrot is indeed register based. At least when compared to Perl 5, this is a tremendous advantage. Perl 5's VM spends a lot of time fiddling with its stack (pushing a marker on, pushing arguments on, pulling arguments off and checking for a marker) that Parrot can avoid altogether. Of course, that means that Parrot needs to spend time saving and restoring register stacks, but Dan's position is that there's enough good research on the subject to make optimizations practical.

    Plus writting in parrot asm is fun!

    Tell me about it. I'm a day or two from checking in simple-but-useful OpenGL bindings.

    1. Re:Registers versus Stacks by chromatic · · Score: 4, Informative

      Parrot's register scheme really does help, as do PMCs, which allow much better polymorphism and much better extendability than Perl 5's built-in ADTs. Of course, the JIT and scary goto core don't hurt op execution and dispatch either.

      I didn't mention that I prefer PIR so as not to confuse people, but you're right -- I much prefer writing for IMCC than for raw Parrot. Thankfully, having to care about the distinction mostly went away a long time ago.

  5. Ex Parrot by complete+loony · · Score: 4, Funny
    What? not a single monty python parrot sketch quote yet?
    Well, I'll soon fix that then.
    'E's not pinin'! 'E's passed on! This parrot is no more! He has ceased to be! 'E's expired and gone to meet 'is maker!
    'E's a stiff! Bereft of life, 'e rests in peace! If you hadn't nailed 'im to the perch 'e'd be pushing up the daisies!
    'Is metabolic processes are now 'istory! 'E's off the twig!
    'E's kicked the bucket, 'e's shuffled off 'is mortal coil, run down the curtain and joined the bleedin' choir invisibile!!

    THIS IS AN EX-PARROT!!

    --
    09F91102 no, 455FE104 nope, F190A1E8 uh-uh, 7A5F8A09 that's not it, C87294CE no. Ah! 452F6E403CDF10714E41DFAA257D313F.