in reply to Why it takes so much time here?

The time (assuming you are running a 64-bit Perl in your 7GB), is taken in two stages:

  1. Allocating 6.8GB to hold the 100 million scalars on the stack;
  2. Cleaning up 100 million scalars from the stack

If you want your Perl code to perform the same thing but more quickly, try this:

#! perl -slw use strict; use Time::HiRes qw[ time ];; use List::MoreUtils qw/any/; print time(); my @a; $_== 92 and push @a, $_ and last for 1..10000000; print time; print @a; __END__ C:\test>junk38 1325044379.166 1325044379.17017 92

That took just 0.00417 seconds on my machine.

Note that it is different from your C code in that like List::MoreUtils::any(), it stops looking as soon as it has seen a value that meets your test criteria.


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

The start of some sanity?