Robert B.: Performance JS-Function

Beitrag lesen

Moin @@beatovich,

Der folgende Code wird bei jedem Keydown Event (auf body registriert) ausgeführt:

Wird der komplette Code bei jedem Event ausgeführt oder nur die Funktion? Ersteres scheint mir unnötig, da sich die Variablen bindings und keyFunction nicht ändern und die Funktion keyController auch nur einmal definiert werden muss.

Ansonsten hätte ich folgende Ideen, die du mal ausprobieren kannst:

  • Die Berechnung der Variable code ist doch eigentlich ein Bitmuster, wobei das sogar ohne Bitschubsen geht:
code = ev.target === ta + 2 * !!ev.shiftKey + 4 * !!ev.ctrlKey + 8 * ev.altKey;
  • Die flache Datenstruktur von bindings mit dem String-basierten Dictionary-Lookup in einen Baum mit den Event-Eigenschaften überführen:
bindings[ev.target][ev.shiftKey][ev.ctrlKey][ev.altKey];

// oder als Methodenaufruf, in dem die Attribute zugeordnet werden:
bindings.call(ev);
  • Notation der Methoden in keyFunction nicht als Strings:
const keyFunction = {
    ENCODE_HTML: function() { /* … */ },
    // …
};
  • Notation der Methoden direkt in bindings.

Viele Grüße
Robert