The only speed up that I can think of right now is
If I know I'm going to be sorting a large dataset later on, and I want that sorted loop to be a little tighter I will prepackage the elements I want to actually output.. something along the lines of
# a sample file, lets say a *really* long /etc/passwd file
# with lines like
root:x:0:0:Super User:/:/sbin/sh
someone:x:45:14:Some One:/home/someone:/bin/csh
sometwo:x:46:14:Some Two:/home/sometwo:/bin/ksh
# Lets say im gonna sort on uid then gid, I'll do
while (<IN>) {
chomp;
($uid,$gid) = ( split(/:/) )[2,3];
push(@tosort, [$uid, $gid, $_]);
}
...
for ( sort { $a->[0] <=> $b->[0] || $a->[1] <=> $b->[1] } @tosort ) {
print "$_->[2]\n";
}
Now I haven't actually benchmarked it, so I'm not sure about a speed increase, but in the actual flow of the program, provided the comments are there to describe whats going on, it makes it easier for me to follow later on, and the for (sort) {} block is just that little bit tighter without needing a split(/:/) in there...
p.s after proof reading my post for typos I notice another idiom I use, again without any thought as to performance. I only return the values from a split I want/need. I also don't know if that is faster (its a little late to be benchmarking, but Ill probably get around to it tommorrow, uh.. today..) but its something I do consistantly. That way a few lines later I'm not pulling arbitrary values out of some array, that may or may not be labeled appropriately for that chunk of code..
/* And the Creator, against his better judgement, wrote man.c */
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, details, 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, summary, 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: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.