Вы не знаете JS: Асинхронность и Производительность

Вы не знаете JS: Асинхронность и Производительность

Автора и серию уважаю, но книга оставила смешанные чувства. В этой части рассказывают про промисы, генераторы, немного про оптимизацию и её принципы, также зачем-то есть большой раздел про библиотеку для работы с асинхронным кодом, которую написал сам Симпсон.

В двух словах: книга вышла в 2015-м году, и какие-то её части уже успели устареть. Что-то останется актуальным навсегда (асинхронные паттерны, принципы оптимизации), а какие-то части, по моему мнению, лишние. Вещи, о которых автор писал с робкой надеждой и в будущем времени, в JavaScript уже стали реальностью.

Вначале идут рассуждения о синхронности и однопоточной природе JS, а также реализации в нём асинхронного кода. Ничего нового за первую сотню страниц я не узнал, их можно было пропустить. Далее автор углубляется в промисы, и посвящает обещаниям много места: но зачем, когда уже давно повсеместно поддерживается async/await? Отделаться от мысли «а зачем?» сложно, поскольку большая часть книги построена на выводах этой главы.

Интересно и по делу про генераторы, веб-работников и asm.js (deprecated). Сверхполезный раздел про производительность, хронометраж (бенчмарки) и оптимизацию. Про то, что не стоит тратить время на микрооптимизации вроде i++ vs ++i нужно прочитать каждому: компилятор всё равно перемолет любые циклы и объявления переменных по-своему, и скорее всего, ещё лучше, чем вручную.

Зачем читать

Разобраться с промисами и генераторами. Проветрить голову насчёт быстродействия и оптимизации кода.

Цитаты

Если X выполняется за 100 нс, а Y — за 80 нс, разность составляет 20 нс, что в лучшем случае составляет всего 1/650 000 интервала, воспринимаемого человеческим мозгом.
К чему я клоню? Что эти различия в быстродействии вообще не важны!

Не пытайтесь превзойти движок JavaScript; в том, что касается оптимизаций быстродействия, вы почти наверняка проиграете.