Производительность TypeScript (asm.JS, компилятор закрытия) и накладные расходы [закрыто]

я изучаю использование TypeScript в сочетании с MVC на стороне клиента (скорее всего,Backbone.js + Marionette.js или Ember.js) для будущих проектов и для этого есть несколько вопросов, связанных с производительностью и оптимизацией:

  • как TypeScript выход сравнить с родной производительности JavaScript мудрый ?

  • С asm.js является подмножеством JavaScript, можно ли конвертировать TypeScript код asm.js код ? Если да, то это уже возможно ?

  • возможно ли и по-прежнему полезно создавать сборки проектов AMD, которые используют TypeScript с Google Closure compiler ?

  • сколько накладных расходов TypeScript добавить в среднем, размер файла мудрым ?

  • при использовании легких библиотек, таких как Backbone.js в небольшом проекте, например. Имеет ли смысл использовать TypeScript в отношении размера файла ?

мне нравятся дополнительные преимущества TypeScript но я не хочу жертвовать производительностью ради стиля кодирования и печати.

какие-нибудь статьи / книги об использовании TypeScript в больших проектах, особенно связанных с производительностью, оптимизация и сборки очень приветствуются !

спасибо заранее !

1 ответов


мы тщательно оценили и протестировали TypeScript в нашей команде, и другие команды уже используют его, поэтому вот мой опыт:

  • TypeScript-это суперсет JavaScript, и он в основном переводит 1: 1 на JavaScript без каких-либо значительных компромиссов производительности, поэтому, если вы знаете, как писать эффективный JavaScript, вы знаете, как писать эффективный TypeScript. Одной из не очень эффективных функций является наследование, которое "эмулируется" с использованием прототипов JavaScript и производит больше код, чем обычно пишется в JavaScript. Поэтому используйте наследование с осторожностью. Вы можете посмотреть сгенерированный JavaScript, чтобы увидеть, достаточно ли эффективно скомпилированы ваши конструкции для вашего случая.
  • компиляция typescript в asm.js-та же проблема, что и компиляция JavaScript в asm.js-вам нужно будет эмулировать функции asm.JS не хватает по сравнению с полным javascript... Если вам нужны некоторые части в asm.js вам, вероятно, нужно будет написать их самостоятельно или скомпилировать из некоторых других соответствующий (менее динамичный) язык emscripten и тому подобное.
  • TypeScript имеет некоторую поддержку AMD, но я не могу говорить о поддержке закрытия google... Поскольку он пытается выполнить аналогичную вещь очень по-разному (типы и metainfo в комментариях вместо нового синтаксиса), я не думаю, что они очень совместимы, чтобы использовать максимум обоих...
  • размер файла на самом деле не проблема, он очень похож на размер файла читаемого JavaScript, если вы не используете наследование a лот!--4-->
  • использование TypeScript с магистралью и другими библиотеками имеет одно преимущество по сравнению с JavaScript; большинство популярных библиотек уже имеют файлы определения типа для TypeScript, поэтому вы получаете автозаполнение и проверку типа почти бесплатно. Разница в размере файла на самом деле не является проблемой по сравнению с хорошо написанным JavaScript.

TypeScript еще довольно молод, и многие вещи, которые мы хотели иметь (JSLint, покрытие кода, TDD, BDD tools,...) в то время отсутствовали. В кроме того, в компиляторе было несколько ошибок (которые были исправлены впоследствии), поэтому мы не решили использовать его, но ни один пункт из вашего списка не показал нам реального отказа...

обновление: Чтобы увидеть потенциал TypeScript, вы можете посмотреть на Visual Studio Online "Monaco". То,что они там сделали, довольно впечатляет.--19-->начало работы с TypeScript для быстрого интро