Note that there are some explanatory texts on larger screens.

plurals
  1. POIs concatenating an array to itself faster than looping through the array to create more indexes?
    primarykey
    data
    text
    <p>I was just taking a look through the source for the examples on the three.js github page, and I came across this ImprovedNoise class, which is basically a Perlin noise script:</p> <p><a href="https://github.com/mrdoob/three.js/blob/master/examples/js/ImprovedNoise.js" rel="nofollow">https://github.com/mrdoob/three.js/blob/master/examples/js/ImprovedNoise.js</a></p> <p>At the very top of the ImprovedNoise function is this:</p> <pre><code>var p = [151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10, 23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33,88,237,149,56,87, 174,20,125,136,171,168,68,175,74,165,71,134,139,48,27,166,77,146,158,231,83,111,229,122,60,211, 133,230,220,105,92,41,55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208, 89,18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,250,124,123,5, 202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42,223,183,170,213,119, 248,152,2,44,154,163,70,221,153,101,155,167,43,172,9,129,22,39,253,19,98,108,110,79,113,224,232, 178,185,112,104,218,246,97,228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249, 14,239,107,49,192,214,31,181,199,106,157,184,84,204,176,115,121,50,45,127,4,150,254,138,236,205, 93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180]; for (var i=0; i &lt; 256 ; i++) { p[256+i] = p[i]; } </code></pre> <p>You'll notice that p is populated with a randomly-sorted array of the numbers 0 to 255. Once the <code>p</code> array is established, the script does a <code>for</code> loop over every position in the array and effectively latches a copy of itself from positions 256 to 511. The order is the same, but the indexes are shifted by 256.</p> <p>So my question is this: is it faster in JavaScript to loop over an array like this or to simply do..</p> <pre><code>p = p.concat(p); </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload