bluebird быстрее стандартных промисов, да и прочих реализаций промисов. Это факт.
Но ваш тест, даже откинув остальные косяки, тестирует не промисы, а crypto.randomBytes. То, что происходит внутри промисов должно выполняться за константное время, чтобы протестировать непосредственно промисы.
Мне кажется, я забыл упомянуть главное. TS — это как ни крути отдельный язык. Если из TS подключать js файл, ему нужно подсунуть аннотации (.d.ts). А flow работает поверх js. Ему не нужно ничего дополнительно указывать, только при особой необходимости.
А .d.ts это еще та боль. Единицы библиотек поддерживают эти самые аннотации, а внешние постоянно старые.
Как человек, попробовавший typescript и сейчас пробующий flow, скажу, что вы не правы. Оба инструмента имееют преимущества и недостатки. Например flow можно включать не для всех файлов, или даже не для всего файла. Он также умеет самостоятельно выводить типы, что прямо крутая фича для динамического языка.
virtualized — это рендер куска списка. Начать с оптимизации рендера вполне здравая идея, прежде чем тянуть дополнительную библиотеку в проект. Особенно если кол-во элементов в списке конечно и предсказуемо.
Не факт, что будет сложнее. Я так понимаю к каждой версии выходит codemode-tool, который приводит весь старый код к новому виду. Если такое делать постоянно, но обратная совместимость имхо не так важна. Подобного не хватает в других технологиях.
Забавно, судя по комментариям многие действительно не понимают, что такое postcss. На самом деле сам по себе это парсер + код-принтер. То есть без плагинов postcss просто распарсит ваш css и запишет его обратно. Дальше есть плагины, вроде autoprefixer, которые изменяют css перед записью.
Это как babel, только в мире css.
zharikovpro css-loader под капотом использует webpack. Miklos потом вам понадобится еще какой-то плагин, который работает поверх postcss и он заново будет парсить css, вместо того, чтобы сделать это внутри postcss. Это тоже вариант, просто не стоит себя обманывать, что вы обходитесь без postcss, он уже внутри gulp-autoprefixer.
У вас постоянно происходит перерисовка #main. В тот момент, как вы кликаете по тексту, этого текста в DOM уже нет.
Попробуйте в render добавить логирование.
Либо через regenerator, где здоровенный switch-case, либо await заменяет на yield и оборачивает функцией, которую указал в настройках. bluebird.coroutine, на пример.
Второй вариант поддерживается node нативно, так что async-await можно спокойно использовать, если пишешь под node.
В коде подобных библиотек — вполне может стать. Дело даже не в том, что приведенный мной вариант быстрее (в 4-30 раз), а в том, что вся функция не будет оптимизирована. Если эта библиотека используется на сотнях, или тысячах картинок это может вылиться в видимую задержку.
Ради экономии сотни байт вы теряете в читаемости и производительности? Странная экономия на спичках.
В прочем вполне можно обойтись и без babel, самостоятельно приведя аргументы к массиву.
function foo() {
var args = new Array(arguments.length);
for (var i = 0; i < arguments.length; i++) {
args[i] = arguments[i];
}
console.log(args);
}
bluebird быстрее стандартных промисов, да и прочих реализаций промисов. Это факт.
Но ваш тест, даже откинув остальные косяки, тестирует не промисы, а
crypto.randomBytes. То, что происходит внутри промисов должно выполняться за константное время, чтобы протестировать непосредственно промисы.А .d.ts это еще та боль. Единицы библиотек поддерживают эти самые аннотации, а внешние постоянно старые.
https://flowtype.org/try/#0PQKgBAAgZgNg9gdzCYAoVBjOA7AzgFzHwFMCwBeMACgEoKA+MAchIKYG51X9aA6fOADEAlgA9iAE1qcgA
Это как babel, только в мире css.
zharikovpro css-loader под капотом использует webpack.
Miklos потом вам понадобится еще какой-то плагин, который работает поверх postcss и он заново будет парсить css, вместо того, чтобы сделать это внутри postcss. Это тоже вариант, просто не стоит себя обманывать, что вы обходитесь без postcss, он уже внутри gulp-autoprefixer.
Попробуйте в render добавить логирование.
Второй вариант поддерживается node нативно, так что async-await можно спокойно использовать, если пишешь под node.
Абсолютно верно, остальные движки еще медленнее в этом месте: jsperf.com/arguments-spread
Продолжайте себя в этом уверять и не изучать изменения в языке.
В прочем вполне можно обойтись и без babel, самостоятельно приведя аргументы к массиву.
var foo = function() {}
undefined
foo.name
""