Como desativar o compilador de otimização do V8
Estou escrevendo uma função de comparação de cadeia de tempo constante (para node.js) e gostaria de desabilitar o compilador de otimização do V8 para esta função única; O uso de sinalizadores de linha de comando está fora de questão.
Eu sei que usando umwith{}
(ou tente / catch) bloco irá desativar o compilador de otimizaçãoagora, mas eu tenho medo que esse "recurso" (bug) seja corrigido em versões futuras.
Existe uma maneira imutável (e documentada) de desativar o compilador otimizador do V8?
Exemplo de função:
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;
}
}
E umteste de perf apenas por diversão.