function exampleFunction() {
let s = 0;
for (let i = 0; i < 1000; i++) {
s += i;
}
console.log(s);
}
Function is optimized by TurboFan: exampleFunction
В текущей версии браузер не оптимизирует, через пару обновлений будет
во вторых то, что код не вызывает деоптимизации и компилируется, еще не значит, что он будет работать быстро, так что для написания производительного кода все еще нужно будет держать в голове много информации о работе движка
Может да, а может нет. Держать все нет смысла, так как оптимизатор развивается быстрее, чем мы пишем код
async function exampleFunction() {
try {
let result = await asyncTest()
await delayAsync(500)
console.log(`result after 500ms: ${result}`)
}
catch (err) {
console.error(err)
}
}
Function is optimized by TurboFan: exampleFunction
Эти тесты на LTS node ожидаемо ничем не отличаются от прошлогодних выводов, речь про chrome 55 и node v8.0.0
Если заглянуть еще дальше, то в Chrome 57 canary уже оптимизируются даже async-await функции (юху!)
async function delayAsync(delay) {
return new Promise(resolve => {
setTimeout(() => resolve(), delay)
})
}
async function asyncTest() {
return 'habrahabr'
}
async function exampleFunction() {
let result = await asyncTest()
await delayAsync(500)
console.log(`after 500ms: ${result}`)
}
Function is optimized by TurboFan: exampleFunction
Function is optimized by TurboFan: asyncTest
Function is optimized by TurboFan: delayAsync
//ждем 500ms, после этого результат
(3) after 500ms: habrahabr
Мне кажется другие браузеры не отстают в этом вопросе, но в контексте убийц оптимизации, клиентский js код не факт что имеет ощутимый вклад в отзывчивость страниц, там ведь в первую очередь проблема с DOM и детекцией видимости объектов и скрытием невидимых.
Тут важнее, чтобы все браузеры внедрили IntersectionObserver, и популярные фреймворки/библиотеки стали поддерживать эту технологию — тогда страдать никому не придется =)
А с v8 всё просто, если оптимизировали там, значит в node код станет быстрее, и писать его будет проще
В текущей версии браузер не оптимизирует, через пару обновлений будет
Может да, а может нет. Держать все нет смысла, так как оптимизатор развивается быстрее, чем мы пишем код
Если заглянуть еще дальше, то в Chrome 57 canary уже оптимизируются даже async-await функции (юху!)
Тут важнее, чтобы все браузеры внедрили IntersectionObserver, и популярные фреймворки/библиотеки стали поддерживать эту технологию — тогда страдать никому не придется =)
А с v8 всё просто, если оптимизировали там, значит в node код станет быстрее, и писать его будет проще