esbuild is faster but the built programs on average are slower
(оригинал отдает 404 потому что сайт сейчас переезжает на другой движок)
Давно хотел написать про то что привычные нам минификаторы часто выполняют роль оптимизирующего компилятора, но не могу найти подтверждения своим словам в виде каких-то годных статей.
Помню что когда-то что-то читал в ишьесах core-js, но из свежего есть только статья из топика, информация в которой тоже уже могла устареть.
Часто, оптимизации касаются каких-тобагов проблем и недоделок со стороны движков, например как деоптимизация let и const в сафари.
Но есть и классические оптимизации. Вы можете прямо сейчас зайти на try.terser.org и вставить туда такой код:
Внимательно посмотрев на выхлоп можно увидеть две оптимизации: инлайнинг функции loop и трансформация while в for, который в движках (был?) лучше оптимизирован.
UPD: хммм, а инлайнинг там не правильный какой-то, вместо тела функции вставляется сама функция, видимо, для вырезания объявления переменной. Не круто.
(оригинал отдает 404 потому что сайт сейчас переезжает на другой движок)
Давно хотел написать про то что привычные нам минификаторы часто выполняют роль оптимизирующего компилятора, но не могу найти подтверждения своим словам в виде каких-то годных статей.
Помню что когда-то что-то читал в ишьесах core-js, но из свежего есть только статья из топика, информация в которой тоже уже могла устареть.
Часто, оптимизации касаются каких-то
Но есть и классические оптимизации. Вы можете прямо сейчас зайти на try.terser.org и вставить туда такой код:
const loop = (n, cb) => { while(n--) cb() }
export const fn = n => loop(n, () => {})
Внимательно посмотрев на выхлоп можно увидеть две оптимизации: инлайнинг функции loop и трансформация while в for, который в движках (был?) лучше оптимизирован.
UPD: хммм, а инлайнинг там не правильный какой-то, вместо тела функции вставляется сама функция, видимо, для вырезания объявления переменной. Не круто.