Jak wyłączyć kompilator optymalizacji V8
Piszę funkcję porównywania ciągów czasu stałego (dla node.js) i chcę wyłączyć kompilator optymalizacji V8 dla tej pojedynczej funkcji; używanie flag wiersza poleceń jest wykluczone.
Wiem to za pomocąwith{}
(lub try / catch) blok wyłącza kompilator optymalizacjiteraz, ale obawiam się, że ta „funkcja” (błąd) zostanie naprawiona w przyszłych wersjach.
Czy istnieje niezmienny (i udokumentowany) sposób wyłączania kompilatora optymalizującego V8?
Przykładowa funkcja:
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;
}
}
I atest perf dla żartu.