PDA

Просмотр полной версии : Сравнивал ли кто-нибудь производительность TypeScript с нативным JS?


mikhailk
25.05.2016, 17:43
При разработке на TypeScript получаем в итоге сгенерированный код JS, который не похож на тот код, который получился бы, если бы писали непосредственно на нативном JS.

Сравнивал ли кто-нибудь, насколько этот код отличается от нативного по производительности? Может кто видел ссылку на уже проведенные такие тесты?

alatar
26.05.2016, 15:12
http://stackoverflow.com/questions/20820596/typescript-performance-asm-js-closure-compiler-and-overhead
http://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=typescript&lang2=v8

mikhailk
26.05.2016, 17:05
Ну да, как-то так я и думал.
По идее, ничего критичного.

undefined
26.05.2016, 19:24
Можете в двух словах прояснить такие вопросы:
1)Контроль типов происходит только при "компиляции"?Или в рантайме тоже?
2)Есть ли аналоги флэшевых операторов as/is?

Zebestov
26.05.2016, 23:44
Есть ли аналоги флэшевых операторов as/is?
Не знаю, как там в TS, а в JavaScript as не нужен, а is — это instanceof.

mikhailk
27.05.2016, 12:18
1)Контроль типов происходит только при "компиляции"?Или в рантайме тоже?

Если отбросить лирику, то Typescript это вот что такое:

class Person {
name: string;
surname: string;
private id: number;
static title = "Example";

constructor (name: string, surname: string) {
this.name = name;
this.surname = surname;
}

setID (id) { this.id = id; }

getFullName () { return this.name+" "+this.surname; }
}

превращается в нативный js такого вида:

var Person = (function () {
function Person(name, surname) {
this.name = name;
this.surname = surname;
}
Person.prototype.setID = function (id) {
this.id = id;
};
Person.prototype.getFullName = function () {
return this.name + " " + this.surname;
};
Person.title = "Example";
return Person;
})();

Так что, конечно, на этапе выполнения никакого дополнительного контроля типов быть не может. Там же чистый js, причем не последнего стандарта.

Кстати, ES-2015 для JS показывает правильное направление развития самого JS.
https://learn.javascript.ru/es-modern

Причем, кое-кто из браузеров уже поддерживает его, а для остальных есть Babel. Но мы все-таки пока остановились на TypeScript.

undefined
27.05.2016, 13:56
Не знаю, как там в TS, а в JavaScript as не нужен, а is — это instanceof.
ну в js то и нет типизации по сути.Походу TS с полиморфизмом не дружит.Значит на оба вопроса ответ - "нет".Благодарю

Zebestov
28.05.2016, 01:48
ну в js то и нет типизации по сути … значит на оба вопроса ответ — "нет"На второй вопрос был дан конкретный ответ. Что там "нет", автор ответа не понимает. Пояснишь?

undefined
28.05.2016, 12:58
На второй вопрос был дан конкретный ответ. Что там "нет", автор ответа не понимает. Пояснишь?
Вопрос был:
Есть ли аналоги флэшевых операторов as/is?
Ответ:
Не знаю, как там в TS, а в JavaScript as не нужен, а is — это instanceof.
Т.е. 50% "нет"

Zebestov
28.05.2016, 13:07
О каких 50% идет речь? Ответ был дан по поводу того, во что в конечном счете превращается TS (это видно по ответу ниже моего) — по JavaScript. А в нем аналог is имеется. То, что в JavaScript нет аналога as, не значит, что "на оба вопроса ответ - нет", это же очевидно. Да и отсутствие строгой типизации здесь не понятно к чему упомянуто.

undefined
28.05.2016, 13:38
is - есть,
as - нету
50%

Добавлено через 1 минуту
про типизацию я упомянул в том смысле что в js её нет, потому там as и не нужен.А в TS где пытаются эту типизацию имитировать он пригодился бы.

amesqit
28.05.2016, 13:48
А что можете сказать о Dart? Есть какие-то существенные преимущества/недостатки относительно TypeScript?

Zebestov
28.05.2016, 14:13
Значит на оба вопроса ответ - "нет"
is - есть,
as - нету
Ты определись =)

undefined
28.05.2016, 14:19
Т.е. 50% "нет"
+пару символов для объема

Zebestov
28.05.2016, 15:37
Статистика… бессмысленная и беспощадная. На я тебя понял, ты ошибся и придумал как не отвечать на вопрос =)

undefined
28.05.2016, 15:40
Я ошибся что оба ответа "нет" - на самом деле "нет" там всего 75%
ПС:что за вопрос?

Zebestov
28.05.2016, 15:42
Теперь уже 75%? У тебя реально семь пятниц на неделе =)

undefined
28.05.2016, 15:44
так что за вопрос то?

Добавлено через 1 минуту
50% - "нет" это по второму вопросу было

Zebestov
28.05.2016, 15:47
Второй мой комментарий в этом тредике. Ты со своими одному тебе понятными и чем-то ценными процентами запутался в трех соснах =)

undefined
28.05.2016, 15:50
давай просто окончим этот оффтоп

Zebestov
28.05.2016, 15:52
Да вроде никто не мешал тебе сделать это еще на первой странице =)