So deaktivieren Sie den Optimizing Compiler von V8
Ich schreibe eine Funktion zum Vergleich von Zeichenfolgen mit konstanter Zeit (für node.js) und möchte den Optimierungs-Compiler von V8 für diese einzelne Funktion deaktivieren. Die Verwendung von Befehlszeilen-Flags kommt nicht in Frage.
Ich weiß das mit einemwith{}
Der Block (oder try / catch) deaktiviert den optimierenden Compilerjetzt, aber ich fürchte, dieses "Feature" (Fehler) wird in zukünftigen Versionen behoben.
Gibt es eine unveränderliche (und dokumentierte) Möglichkeit, den optimierenden Compiler von V8 zu deaktivieren?
Beispielfunktion:
function constantTimeStringCompare( a, b ) {
// By adding a `with` block here, we disable v8's optimizing compiler.
// Using Object.create(null) ensures we don't have any object prototype properties getting in our way.our way.
with ( Object.create( null ) ){
var valid = true,
length = Math.max( a.length, b.length );
while ( length-- ) {
valid &= a.charCodeAt( length ) === b.charCodeAt( length );
}
// returns true if valid == 1, false if valid == 0
return !!valid;
}
}
Und einPerf-Test nur zum Spaß.