Array von booleschen Werten, die in JavaScript
In JavaScript gibt es eine Möglichkeit, dies zu tun in einer effizienteren Art und Weise?
Brauche ich zum erstellen eines array von booleschen Werten, ändern Sie und prüfen Sie Sie einzeln und zufällig.
Ziel ist eine bessere Leistung.
Vielleicht ist die Manipulation von bits.
Jetzt benutze ich etwas wie dieses:
var boolean = [];
var length = 100; //set a random number of values
for (var i = 0; i < length; i++) boolean[i] = false; //or true
boolean[n] = true; //change some of the values randomly
if (boolean[n]) { /* something */ } //check some of the values randomly
- Bessere performance von dem Teil? Erstellen Sie das array? Füllen Sie es mit
false
? Aktualisieren Sie es später? - Sorry, zu sehr daran gewöhnt zu Benachrichtigungen. Die überprüfung der Werte ist sehr wichtig für mich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Also gibt es drei Teile dieser:
Erstellen des array
Etwas Konter-intuitiv, was Sie tun, ist schon Prima, obwohl standard-JavaScript-arrays sind nicht wirklich arrays an alle, weil die Art und Weise, die Sie erstellen, und füllen Sie das array, einen modernen Motor wird mit einem true-array hinter die kulissen. (Siehe meine Antwort auf diese Frage für weitere Informationen, einschließlich der performance-tests.) Also auch auf Motoren, die haben echte arrays wie
Uint8Array
, was du machst, ist in Ordnung. Aber siehe Punkt 2 unten.Befüllen mit falsey Werte
Da es nur 100 Einträge, es funktioniert einfach nicht egal, wie Sie dies tun, es sei denn, Sie erstellen und füllen Sie die array-immer wieder in einer engen Schleife. Wenn Sie sind, dann ein
Uint8Array
sollte gewinnen, weilnew Uint8Array(100)
ist bereits mit Nullen gefüllt und Sie müssen nicht zum ausfüllen an alle.Zugriff auf die array-Einträge
Du nicht wirklich viel Auswahl da, Sie tun es so, wie du es tust. Vorausgesetzt, erstellen Sie das array so, wie Sie sind, oder Sie verwenden ein
Uint8Array
, das ist wahrscheinlich so schnell wie es geht zu bekommen.Finde ich http://jsperf.com hilfreich für den Vergleich von Herangehensweisen an Dinge und sehen, wie Sie sich auf die Reale Welt JavaScript-engines. Zum Beispiel, hier ist ein Testfall darauf hindeutet, dass ein
Uint8Array
bieten eine leichte Vorteil auf SpiderMonkey (Firefox-engine), in etwa gleich auf V8 (Chrome-engine), und sehr leicht langsamer auf JScript (IE11-engine):Standard-Palette:
Uint8Array
:Ergebnisse auf Chrome, Firefox und IE11:
kann auf diese Weise