Inzwischen haben die meisten Mainstream-Browser damit begonnen, optimierte JIT-Compiler in ihre JavaScript-Interpreter/virtuellen Maschinen zu integrieren. Das ist gut für alle. Nun wäre es mir schwer, genau zu wissen, welche Optimierungen sie durchführen und wie sie am besten genutzt werden können. Was sind Verweise auf Optimierungen in den einzelnen JavaScript-Engines?Welche Optimierungen machen moderne JavaScript-Engines?
Hintergrund:
Ich arbeite an einem Compiler, den JavaScript von einer höheren Ebene erzeugt & sichere Sprache (schamlose Werbung: es OPA genannt und es ist sehr cool) und angesichts der Größe von Anwendungen, die ich bin Ich möchte, dass mein JavaScript-Code so schnell und so speichereffizient wie möglich ist. Ich kann High-Level-Optimierungen durchführen, aber ich muss mehr darüber wissen, welche Laufzeittransformationen durchgeführt werden, um zu wissen, welcher Low-Level-Code die besten Ergebnisse liefert.
Ein Beispiel, von ganzem Herzen: die Sprache, die ich kompiliere wird bald Unterstützung für Faulheit integrieren. Funktioniert JIT-Engines mit Lazy-Funktionsdefinitionen?
Ich persönlich denke, die beste Möglichkeit, die Vorteile von Compiler/JIT-Optimierungen zu nehmen ist ebenso selbstverständlich, Ihren Code zu generieren, so lesbar und so wartbar wie möglich und lassen Sie den Compiler/Jit arbeiten, es ist Magie. Jeder Versuch, gezielt auf Compiler-Optimierungen abzuzielen, führt wahrscheinlich zu weniger wartungsfähigem Code, und in ein oder zwei Jahren, wenn die Compiler alle geändert wurden, sind Ihre Optimierungen nicht mehr gültig. –
Nun, lesbarer/wartbarer Code ist nicht wirklich mein Ziel. Ich kompiliere aus einer Sprache, die sich stark von JS unterscheidet, also erwarte ich nicht, dass irgendjemand viel auf dem generierten JS liest. Wie für JIT Magie und Ungültigkeit von Optimierungen, nun, ja, Sie haben einen Punkt. – Yoric