Array of boolean values in JavaScript -
Array of boolean values in JavaScript -
in javascript, there way in more efficient way?
i need create array of boolean values, alter them , check them individually , @ random.
the goal improve performance. maybe manipulating bits.
right utilize this:
var boolean = []; var length = 100; // set random number of values (var = 0; < length; i++) boolean[i] = false; // or true boolean[n] = true; // alter of values randomly if (boolean[n]) { /* */ } // check of values randomly
so there 3 parts this:
creating array
somewhat counter-intuitively, you're doing fine though standard javascript arrays aren't arrays @ all, because way you're creating , filling in array, modern engine utilize true array behind scenes. (see my reply other question more on that, including performance tests.) on engines have true arrays uint8array, you're doing fine. see point #2 below.
filling falsey values
as there 100 entries, doesn't matter how this, unless you're creating , filling in array repeatedly in tight loop. if are, uint8array should win, because new uint8array(100) pre-filled zeroes , don't have fill in @ all.
accessing array's entries
you don't have much selection there, way you're doing it. provided create array way or utilize uint8array, that's fast it's going get.
i find http://jsperf.com helpful comparing approaches things , seeing how turn out on real-world javascript engines. instance, here's test case suggesting uint8array offer slight advantage on spidermonkey (firefox's engine), same on v8 (chrome's engine), , very slightly slower on jscript (ie11's engine):
standard array:
var a, n, dead; // creation = []; // filling (n = 0; n < 100; ++n) { a[n] = false; } // accessing randomly 5,000 times dead = 1; (n = 0; n < 5000; ++n) { a[math.floor(math.random() * a.length)] = true; if (a[math.floor(math.random() * a.length)]) { ++dead; // doing } } // create sure engine knows we're using result if (dead === 0) { throw "error in test"; } uint8array:
var a, n, dead; // creation = new uint8array(100); // filling // none! // accessing randomly 5,000 times dead = 1; (n = 0; n < 5000; ++n) { a[math.floor(math.random() * a.length)] = 1; if (a[math.floor(math.random() * a.length)]) { ++dead; // doing } } // create sure engine knows we're using result if (dead === 0) { throw "error in test"; } results on chrome, firefox, , ie11:
javascript boolean bit-manipulation
Comments
Post a Comment