Kc12349 has asked for the wisdom of the Perl Monks concerning the following question:
I have been attempting to do some optimization which involved array assignment and iteration. While doing so I found something that confused me but was ultimately unrelated to my production code, as it only occurs when I print some debug.
I have boiled down a loss of almost an order of magnitude to the below test case. I have removed all the test code save for copying an array into another array from my for loop.
I have commented out three different lines of code which I tested one at a time and got a time interval value for. Running with the #<nothing> line, i.e., with no extra line, I see similar performance to the line say @array. What has me confused is the performance I get after printing an interpolated copy of the array with the line say "@array".
If anyone can enlighten me, even if I am missing something elementary, it would be greatly appreciated.
use Time::HiRes qw(gettimeofday tv_interval); my @array = (1..100); # say "@array"; # 0.332776 s # say @array; # 0.052496 s # #<nothing> # 0.052361 s my $t0 = [gettimeofday]; for (1..10000) { my @array2 = @array; } say tv_interval($t0);
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Strange performance loss after interpolating an array and then copying to another array;
by SuicideJunkie (Vicar) on Aug 19, 2011 at 18:01 UTC | |
by moritz (Cardinal) on Aug 19, 2011 at 18:09 UTC | |
by Kc12349 (Monk) on Aug 19, 2011 at 18:13 UTC | |
by Kc12349 (Monk) on Aug 19, 2011 at 18:08 UTC | |
|
Re: Strange performance loss after interpolating an array and then copying to another array;
by Kc12349 (Monk) on Aug 19, 2011 at 18:03 UTC |