in reply to Re^3: Optimization, side-effects and wrong code
in thread Optimization, side-effects and wrong code
Can you tell us the method you used to get the memory figures ? And your platform/perl details too ?
I ran your snippets on my RH9 with perl, v5.8.0 built for i386-linux-thread-multi and I made one change to snippet C to
perl -le '%hash = (1 .. 1000000); for (keys %hash) { print ">"; <STDI +N> ; exit}'
I just used top to look at the Size column, and my results are
COUNT | a mem | b mem | c mem | a-b change | a-c change |
---|---|---|---|---|---|
100,000 | 10,960 | 11,984 | 11,004 | 1,024 (9.3%) | 44 (0.4%) |
1,000,000 | 94,324 | 101,000 | 94,460 | 6,676 (7.1%) | 136 (0.1%) |
Note the top in RH9 truncates snippet B, 1,000,000 items to 101M, and I haven't figured out how to change the units for this field - perhaps I need to use something other than top...
So in conclusion, I agree, it does appear there is some optimisation going on - is this an example of lazy evaluation ?
use brain;
|
---|