Тема: Typescript vs Dart
Показать сообщение отдельно
  #31 (permalink)  
Старый 12.10.2012, 21:24
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Я писал в общем, больше про организацию кода, нежели про быстродействие.

Но что касается скорости, то падение конечно весьма существенное.
я попробую донести мысль.
Сразу дико извиняюсь не писал на ассембле со времён доса ))

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

возьмём пример на js
a=a+b;

если переменные типизированы и имеют целый вид.
то результат в машинных кодах будет выглядеть как то так.

mov eax,a ;//Перемещаем в eax, значение из a
mov edx,b ;//Перемещаем в edx значение из b
add eax,edx ;//складываем значения


А если нетипизированы то что делать ?
процессор то только с регистрами умеет операции выполнять, а про нетепизированные переменные он слыхом неслыхивал

очевидно что придётся хранить для одной переменной, два значения одно указывающее на тип, второе на значение. Проверять тип по условию и взависимости от условий вызывать подпрограмму ответственную за выполнение возможной операции

//в al- значение символизирующее тип обоих переменных (пусть для простоты примера он общий для обоих переменных)
// если тип =1 тогда перейдём к метке sumvar
cmp al, 1
jz sum_var

// если тип =2 тогда перейдём к метке sumstring
cmp al, 2
jz sum_var

//подпрограмма сложения целых чисел
sumvar:

jmp next_step

//подпрограмма сложения строк
sumstring:

jmp next_step

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

Последний раз редактировалось DjDiablo, 12.10.2012 в 21:42.
Ответить с цитированием