IIRC, technically, the for() would take more time but only noticeable with
exceptionally large arrays. I seem to recall something about for() copying
an array before iterating. Other than that, it's pretty much the same. You
could use the benchmarking module (use Bench, I think, but check the Camel
book), but I imagine the difference is no more than a tick or two.

Stylistically, however, I would recommend grep:

@match = grep (int($filter) & int($image_data{$_}[2])) == $filter,
@image_list;

Keary Suska
Esoteritech, Inc.
"Leveraging Open Source for a better Internet"

> From: Richard Smith <[EMAIL PROTECTED]>
> Date: Mon, 19 Nov 2001 23:33:32 +0000 (GMT)
> To: [EMAIL PROTECTED]
> Subject: [MacPerl] Which is faster?...
> 
> Hi All,
> 
> I have too version of a routine that iterates through
> about 140 elements of an array. I am trying to make
> the script as efficient as possible (obviously), and I
> have 2 versions of a routine that does a bitwise
> comparison to match a filter. Can anyone tell me just
> by looking which is likely to be fater? My guess is
> the map version:
> 
> 1. loop version:
> 
> for (@image_list) {
> ( int( $filter ) & int( $image_data{$_}[2] ) ) ==
> $filter and push @match, $_;
> }
> 
> 2. Map version:
> 
> @match = map { ( int( $filter ) & int(
> $image_data{$_}[2] ) ) == $filter and $_ or () }
> @image_list;
> 
> Any thoughts much appreciated.
> 
> BTW, can anyone tell me why saying 'use integer' kills
> the operation of 'localtime'?
> 
> TIA,
> 
> Richard
> 
> 
> __________________________________________________
> Do You Yahoo!?
> Everything you'll ever need on one web page from News and Sport to Email and
> Music Charts
> http://uk.my.yahoo.com
> 

Reply via email to