Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"

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.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://962713]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (8)
As of 2018-06-23 08:44 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (125 votes). Check out past polls.