in reply to Why "Modern Perl" is slower than "Legacy Perl"?

Originally when I wrote perl (perl5.4.4 on the IBM RS/6000 AIX Unix) code in the '90s, my interest in perl was to prototype the application and then rewrite it in C. If you look at your sample, you are doing the same! As I have discovered, perl is more than C. Today, I don't use perl to prototype, but use it to develop full projects in less time and with more functionality. ( and usually much faster both in my time and in CPU cycles ).

Until 2002-3, I never used a hash (and your sample doesn't either). My last large project used 20,000+ lines of actually code plus comments, and maintained sub-second response time consistently with as many as 400 users logged into the system. (Note: I can't image how long it would have taken to do that project in C. ) The code is full of hashes that improve performance.
Let perl do the look up!

In the '80s I wrote a wordprocessor to emulate WordPerfect for law office professionals. It was written in C, and as each new operating system/hardware computer emerged, I would rewrite it to get it to work. After a while it was getting less and less portable. Finally, I bit the bullet, and rewrote it in perl. It took about 6 months and I learned about functionality in perl that I had been missing. To my amazement it was faster than the C version. Certain text features were faster in perl than in C. If I had to edit a 8_000_000 line log file, I didn't have to consider the software/hardware architecture, just let perl handle it. By moving from perl5.6.1 to perl5.8.8, it was faster again. So far the fasted perl I have used is 5.12.2, but that is because I'm writing code in perl and not C-like.

Since you are in a learning and/or relearning cycle with perl, look into the full perl solution, not what was available with perl5.6.1, but what perlish solutions are better today. I'm confident that you'll like and respect the "modern perl".

Thank you

"Well done is better than well said." - Benjamin Franklin

  • Comment on Re: Why "Modern Perl" is slower than "Legacy Perl"?

Replies are listed 'Best First'.
Re^2: Why "Modern Perl" is slower than "Legacy Perl"?
by Tux (Canon) on Jul 04, 2011 at 08:20 UTC

    One of the best replies I've read in weeks! I wish I could up this more than once.

    I fully recognize your path. I also worked with (even older) perl on AIX, and when I had to, I always wanted I could do it faster (any other system gave me more vivid response). But I must say that newer AIX also gave newer perl a better architecture to work on. I still hate AIX, but I must say that I hate AIX 5.3 a lot less than I hat AIX 3.1 but I still prefer Linux or HP-UX over AIX in any case.

    And I never ever even consider using C over perl to gain performance. If I have to micro-optimize heavily visited perl code that actually warrants C, I'll write it in XS. That is a proven path (see e.g. the speed comparison between Text::CSV_XS versus Text::CSV_PP), but it has the huge advantage of easy integration into the whole of the perl script.

    Also note that if you have to access databases in C, none of the code is portable between databases. All have their own API and edge cases one has to code around. The low maintenance level of perl scripts using DBI instead is one huge selling point of using perl from the start.


    Enjoy, Have FUN! H.Merijn

      Tux, thank you!

      Background: for AIX, I started with AIX 2.0.x something on the RT. Hopefully, you started with AIX 3.1, since it was much better than the RT version, and like perl, AIX has been getting better. But for programming, I started out writing code in machine language. When I graduated college, my first job was with IBM, and we could write code in assembler. I was in love with computers!

      I like Linux, but it reminds me now of the early days of Unix; every version wants to be different. Thank goodness for perl! I just finished a project yesterday, so I'll be around the Monastery a little more.

      Again, thank you...Ed

      "Well done is better than well said." - Benjamin Franklin