Микрооптимизации производительности и JavaScript
Прочитал статью Андрея Мелихова про погоню за производительностью в JavaScript-приложениях — "Микрооптимизации производительности и JavaScript".
Андрей в статье на хороших примерах показывает, почему разработчики js-движков призывают писать идиоматичный код. Причина в том, что работающие сегодня оптимизации завтра могут стать деоптимизациями из-за обновления движка или api платформы. Если преимущество в несколько миллисекунд, действительно, важно для проекта, то только тогда стоит задуматься об оптимизациях или о переписывании узкого горла на более низкоуровневом языке.
Добавлю ещё своих мыслей. В те годы, когда в Node.js были популярны микрооптимизации, появился шуточный термин "CrankShaftScript" (CrankShaft движок v8, который использовался в Node.js до версии 8.3). Этим термином называли js-код, который был написан так, чтобы JIT генерировал быстрый машинный код. Когда v8 перешёл на Turbofan, эти оптимизации стали бесполезны, так как новый JIT-компилятор научился генерировать эффективный машинный код из идиоматичного js-кода.
Хочу закончить пост фразой из статьи: "Иначе говоря, не нужно оптимизировать там, где ещё нет проблемы."
https://medium.com/devschacht/optimizations-and-javascript-f8e060d3eae3
https://stackoverflow.com/questions/44764777/what-is-crankshaftscript-in-node-js