Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Re^2: The Rules of Optimization Club

by educated_foo (Vicar)
on Mar 31, 2012 at 04:00 UTC ( #962713=note: print w/ replies, xml ) Need Help??

in reply to Re: The Rules of Optimization Club
in thread The Rules of Optimization Club

Knowing and understanding the efficiency of basic language constructs is part of mastering a programming language.
This. The "methodology" of writing whatever arbitrarily-inefficient code you first think of that produces the desired output, then doing a bunch of profiling followed by tweaking and/or extensive rewrites, is a blight. If you write something both readable and reasonably efficient in the first place, there's a good chance you won't have to mess with it later. Having a clue about hardware and data structures really pays.

This, by the way, is why I've always been annoyed by the "ArrayList" in Java (don't get me started on the "HashArrayListWhatever" used in Lua): depending on your expected access patterns, you'll want either an array or a list. In some cases, you'll want something fancier or more specialized. Arrays give you fast random access and slower insertions; doubly-linked lists give you fast insertion and slower random access; singly-linked lists give you fast insertion at one end with minimal space overhead; balanced trees scale well for most operations, but have a significant constant penalty. If you start out with the right data structure, you may not have to bother with laborious profile-guided optimization.

Comment on Re^2: The Rules of Optimization Club

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (6)
As of 2014-11-27 05:47 GMT
Find Nodes?
    Voting Booth?

    My preferred Perl binaries come from:

    Results (180 votes), past polls