Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask

Comment on

( #3333=superdoc: print w/replies, xml ) Need Help??

We all optimize. Sometimes we do so needlessly, sometimes speed is of utter importance.

I think most of us would agree that readability, maintainability and speed of programming are often way more important than execution speed. But, what if optimizations actually make things more readable, what if optimization increase maintainability, and even let you code faster?

There are some simple tricks that have no down-side to them, and we often recommend them. There are simple optimizations like using $foo instead of "$foo", using $foo == 0 instead of $foo eq 0 (assuming $foo is numeric), etcetera. Then, there are the "doesn't really matter" optimizations, like using length $foo in boolean context instead of $foo ne '' (and of course, length with an implicit $_ is nicer compared to $_ ne ''). And of course, we have more complicated optimizations like the Schwartzian transform (map sort map).

Considering the alternatives, these optimizations make code more readable, maintainable and improve programming speed (although the more complicated ones might be a bit overwhelming the first time).

Can we list these tricks? What are your favourite idiomatic optimiziations?
For the overview, here's a summary of what I already mentioned:

  • $foo vs "$foo" (don't interpolate when not needed)
  • $foo eq 0 vs $foo == 0 (use the right scalar context)
  • length vs $_ ne '' (scalars already "know" their length)
  • scharzian transform vs disassembling and re-assembling data

- Yes, I reinvent wheels.
- Spam: Visit eurotraQ.

In reply to Idiomatic optimizations by Juerd

Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":

  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?

    What's my password?
    Create A New User
    [marto]: can I nominate users ? :P
    [Discipulus]: AM will rulez!

    How do I use this? | Other CB clients
    Other Users?
    Others having an uproarious good time at the Monastery: (11)
    As of 2018-05-22 08:30 GMT
    Find Nodes?
      Voting Booth?