Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot

Re^5: Performance penalties of in-Perl docn vs compiled CGIs. (updated x 2)

by dave_the_m (Monsignor)
on Feb 03, 2021 at 18:44 UTC ( #11127867=note: print w/replies, xml ) Need Help??

in reply to Re^4: Performance penalties of in-Perl docn vs compiled CGIs. (updated x 2)
in thread Performance penalties of in-Perl docn vs compiled CGIs.

A difference is that perl doesn't haven anything resembling a virtual machine or bytecode. Bytecode typically maps fairly easily to equivalent machine code instructions; in principle you could envisage building a CPU that directly executes Java bytecode, in exactly the same sense that we currently have CPUs which can directly execute X86_64 machine code. Perl just has heaps of complex data structures - OP trees, SV trees, regexes etc - none of which maps to a linear set of bytes representing an idealised CPU.

At one point there was perl "bytecode" - but all it was was a way of serialising the contents of all those data structures to a file and then reading them back. It was said to be slower than just compiling.

But this is all a bit nit-picky and toying with semantics. The main take-home point is that when people look for "a perl compiler", what they will find likely won't match their expectations in terms of what it does and what benefits it provides. Hence why I usually feel the urge to disabuse OPs of the notion in such threads.


  • Comment on Re^5: Performance penalties of in-Perl docn vs compiled CGIs. (updated x 2)

Replies are listed 'Best First'.
Re^6: Performance penalties of in-Perl docn vs compiled CGIs.
by LanX (Saint) on Feb 03, 2021 at 19:19 UTC
    We had the discussion already in the past and I'm reluctant to reiterate it.

    And yes, it's semantics.

    Saying OP codes are not byte codes because the latter are more primitive "assembler like" and the former rather macros is also a matter of perspective.

    For instance it's far easier to deparse the original source for Java than C.

    But yes, granted, there are many languages targeting the JVM and only one for Perl's runtime, because the former is "simpler".

    But it should still be possible to generate a .plc from another language, at least in theory.

    And Java is still interpreted, because JIT ne AOT.


    The most crucial point if it comes to performance is rather static Vs dynamic typing, and nobody mentioned it yet.

    Optimizing X+Y is pretty complicated if one doesn't know if it's an integer, float, string or overloaded operation.

    Another dimension of shades of grey.

    ... And semantics.

    Cheers Rolf
    (addicted to the Perl Programming Language :)
    Wikisyntax for the Monastery

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11127867]
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others contemplating the Monastery: (7)
As of 2023-12-06 17:18 GMT
Find Nodes?
    Voting Booth?
    What's your preferred 'use VERSION' for new CPAN modules in 2023?

    Results (31 votes). Check out past polls.