javascript / expert
Snippet
Optimierung des Eigenschaftszugriffs durch monomorphe Formen
V8 verwendet Hidden Classes und Inline-Caches (IC), um Eigenschafts-Lookups zu optimieren. Eine Funktion ist 'monomorph', wenn sie immer Objekte mit derselben internen Form erhält. Wenn die Formen variieren (Polymorphismus), muss V8 komplexe Lookups durchführen und fällt schließlich auf 'Megamorphismus' zurück, was die Leistung erheblich beeinträchtigt.
snippet.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function calculate(point) {return point.x + point.y;}// Monomorphic: Only one shape seenconst p1 = { x: 10, y: 20 };calculate(p1);// Polymorphic: Multiple shapesconst p2 = { x: 30, y: 40, z: 50 };calculate(p2);// Megamorphic: Too many shapes (V8 stops caching)const p3 = { y: 10, x: 5 };calculate(p3);
nodejs
Erklärung
1
function calculate(point) {
Die Zielfunktion für die Inline-Cache-Optimierung von V8.
2
const p1 = { x: 10, y: 20 };
Erzeugt eine Hidden Class mit den Eigenschaften 'x' und dann 'y' in dieser Reihenfolge.
3
const p3 = { y: 10, x: 5 };
Eine andere Hidden Class, da sich die Reihenfolge der Eigenschaftsdefinition geändert hat.