function makeFunc(a,b,c,d,e) {
return () => {
if (a) { /* do something expensive not referencing b,c,d,e */ }
if (b) { /* do something expensive not referencing a,c,d,e */ }
if (c) { /* do something expensive not referencing a,b,d,e */ }
if (d) { /* do something expensive not referencing a,b,c,e */ }
if (e) { /* do something expensive not referencing a,b,c,d */ }
}
}
const func = makeFunc(true, false, false, false, false)
for ( let i=0; i < 100_000; i++) func()
Я надеюсь, что в примере V8 оптимизирует тестирование if (x) на закрытии, издавая только
Например: < /p> [code]function makeFunc(a,b,c,d,e) { return () => { if (a) { /* do something expensive not referencing b,c,d,e */ } if (b) { /* do something expensive not referencing a,c,d,e */ } if (c) { /* do something expensive not referencing a,b,d,e */ } if (d) { /* do something expensive not referencing a,b,c,e */ } if (e) { /* do something expensive not referencing a,b,c,d */ } } }
const func = makeFunc(true, false, false, false, false) for ( let i=0; i < 100_000; i++) func() [/code] Я надеюсь, что в примере V8 оптимизирует тестирование if (x) на закрытии, издавая только [code]/* do something expensive not referencing b,c,d,e */ [/code] после if (a) для выполнения 100 000 раз.