in reply to Re^3: perl process slower and slower when loop number increase
in thread perl process slower and slower when loop number increase

no, it's not about PHP or perl vs XXXX

it's about how to make perl loop faster, and back to first post,I think there is "magic setting" to increase this limitation

see image provide by choroba above

  • Comment on Re^4: perl process slower and slower when loop number increase

Replies are listed 'Best First'.
Re^5: perl process slower and slower when loop number increase
by dave_the_m (Monsignor) on Jan 22, 2018 at 20:57 UTC
    You are misinterpreting the graph: note that it has a logarithmic x-axis. Everything in this thread has shown that (subject to measurement noise), the execution time of this perl code:
    for ($i = 0; $i < N, $i++) {}
    increases linearly with N.

    For the purpose of focusing the discussion, do you (1) dispute that the relationship between time and N is linear, or (2) agree that it is linear, but wish it to be sub-linear?

    Dave.

      If the Anonymous OP is confused by the logarithmic x-axis: for an equal distance along the x-axis, the x-value goes up by a constant factor. (So if the ticks were 1cm apart, and 10 is on the far left, then 1cm to the right of 10 is 100, and 1cm to the right of 100 is 1000: ie, every factor of 10 gets an equal amount of space on the x-axis). gnuplot labels the ticks, so it was unambiguous; however, not everyone has experience looking at a graph with a logarithmic x-axis, so the curve the OP saw might not be immediately identified in the OP's mind as linear.

      If the OP wants a graph with a linear x-axis, then edit choroba's code by changing the following lines in sub plot { ...: change the lines here:

      print {$gp} join "\n", 'set term png;', 'set output "measure.png";', 'set key left;', 'set logscale x;';
      into the lines here:
      print {$gp} join "\n", 'set term png;', 'set output "measure.png";', 'set key left;'; # 'set logscale x;';

      When I plotted with a linear x-axis, the curve for perl is almost perfectly straight -- I think that might communicate the idea to the OP with more clarity.

        in my plot,

        if I comment 'set logscale x;';

        yes the line perfectly straight, but my X axis start after 1x10e6

        so my X axis list is: 0 1x10e7 2x10e7 3x10e7 4x10e7 5x10e7 6x10e7 7x10e7 8x10e7 9x10e7 1x10e8

        its same as my reply for choroba comment, what is "1MB limit" before it slowing down ?

        and why beyond 1Mb number,perl (and now similiar ruby) slowing down more extreme than another language

        and this 1MB limit is not just about limit of $i but like the whole loop operation

        in previous comment, using this variant: time perl -e 'for($i=0;$i<=1000;$i++){for($j=0;$j<=1000;$j++){for($k +=0;$k<=100;$k++){}}}' have the same time with just using 1 loop with $i=1x10e8

        I tought if I make the loop with smaller number It will break 1MB limit, but it's not...

        so i still want to find this "magic setting" (maybe through ENV or system setting ) that can increase this 1MB limit, and hoping without need to hack perl core or recompile from source