http://qs321.pair.com?node_id=679841


in reply to Re^3: Finding Usable Nodes in our Cluster
in thread Finding Usable Nodes in our Cluster

Wow, that's fantastic. I hadn't even considered that approach. It's nice because the formatting of the output of `ganglia proc_run` is conducive to being easily read with minimal reformatting effort.

Is there any considerable speed advantage to using the string instead of the array? Or does it have to do with memory usage?
Current form:
#!/usr/bin/perl #Andrew Levenson #4:14PM EST #Friday, April 11th, 2008 #Displays nodes on Deli with 0 or 1 used processors use strict; use warnings; my $zero = "\nZero Active Processors:\n\n"; my $one = "\nOne Active Processor:\n\n"; foreach ( `ganglia proc_run` ) { $zero .= $_ if /\s0\s+$/ & !/deli/; $one .= $_ if /\s1\s+$/ & !/deli/; } print "$zero$one\n";
C(qw/74 97 104 112/);sub C{while(@_){$c**=$C;print (map{chr($C!=$c?shift:pop)}$_),$C+=@_%2!=1?1:0}}

Replies are listed 'Best First'.
Re^5: Finding Usable Nodes in our Cluster
by jwkrahn (Abbot) on Apr 12, 2008 at 01:12 UTC
    Is there any considerable speed advantage to using the string instead of the array? Or does it have to do with memory usage?

    Using strings instead of arrays will definitely use less memory as each scalar has a certain amount of overhead so two strings vs. two arrays of strings will use less.   Another way to reduce memory usage is to use a piped open and read each line in a while loop.

    As for speed, it depends on how much IO overhead is involved from reading the output of an external program.   But in general using strings should be faster than using arrays.   As always, if in doubt use Benchmark or one of the profilers to determine the speed differences.

    This may also provide some help: When perl is not quite fast enough