Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
А вот на мобильных устройствах всё куда печальнее: мало где можно заставить Canvas выдавать больше 3 FPS
В частности, при помощи операции «|0» и других подобных специальных приёмов тип значения каждого входного параметра функции, равно как и выходного значения, оказывается однозначно заданным и неизменным.
function increase(number)
{
return number + 1; // Медленное сложение, т.к. тип аргумента неизвестен.
}
var num = 0;
for (var i =0; i < 1000000; i++)
{
num = increase (num); // Это горячая функция, по статистике аргумент всегда int
}
function increase(number)
{
if (number is not integer)
{
Singal type inference error // Возврат в медленный режим (самый простой вариант — просто убрать эту оптимизацию)
}
return number + 1; // Быстрое целочисленное сложение
}
function increase(number)
{
number = number | 0; // Битовый OR точно вернет integer, а в процессе оптимизации эту инструкцию можно выкинуть.
return number + 1; // Быстрое целочисленное сложение
}
Движок V8 и браузер Google Chrome станут лучше поддерживать Asm.js