TypeScript на Go пришвидшує компіляцію, але не виконання коду
Експерт розкритикував твердження Microsoft, що переведення компілятора TypeScript з JavaScript на Go дає 10-кратний приріст продуктивності. У своєму дописі на Architecture Weekly розробник Оскар Дудич пояснює, що насправді йдеться про швидкість компіляції, а не виконання коду. Тобто, ваші програми не працюватимуть швидше — пришвидшиться лише їхнє збирання.
Компілятор не чекає на відповідь від бази даних і не займається мережевими запитами. Він завантажує процесор, розбираючи типи гілок, аналізуючи код і генеруючи вихідний файл. Node.js з його однопоточною моделлю та event loop погано підходить для таких завдань. Він чудово працює у веб-серверах, де важлива швидкість відгуку та робота з I/O, але не великі обчислення. З ростом навантаження на компілятор TypeScript, його стара архітектура почала гальмувати.
Тому Go тут виявився підходящим вибором:
Чому тоді просто не використовувати worker threads у Node.js? Це можливо, і вони справді дають паралельність. Але варто врахувати, що переписувати старий код з урахуванням багатопоточності не дуже ефективно. Обмін даними між потоками Node.js йде через серіалізацію, кожен потік створює свій V8-інстанс, що досить дорого для ресурсів.
Команда Microsoft вирішила не удосконалювати старе, а розпочати все з чистого аркуша. І, як довели перші тести, навіть однопотоковий Go-компілятор виявився швидшим, ніж старий на Node.js.
Що стосується браузерів і плагінів, то в браузерах Go не працює нативно. Тому доведеться або компілювати його в WebAssembly, або зберегти JS-версію для різних playground. Так чи інакше, технологія, яка добре працювала у 2012 році, перестає відповідати вимогам сьогодення. Заперечувати цінність змін не варто, особливо якщо йде мова про роботу з великими кодовими базами, де кожен відсоток прискорення важливий.
Сундар Пічаї, який очолює Google з 2015 року, заявив, що його компанія продовжуватиме збільшувати число…
Українські телекомунікаційні компанії та провайдери масово здають в оренду IPv4-адреси, які свого часу були виділені…
У ChatGPT додали конектори для підключення до хмарних сервісів, таких як Google Drive, Box, Dropbox,…
Співробітники управління Кіберполіції НПУ в Запорізькій області затримали 35-річного хакера, який зламав 5000 хостинг-акаунтів і…
Внутрішня команда розробників Apple у новому тематичному дослідженні виявила, що «підхід Java до управління пам’яттю…
Компанія GlobalLogic заявила, що європейський регіон відтепер очолюватиме Юлія Штукатурова, повідомили в DOU. У GlobalLogic Юлія…