В память врезалась статья которую я когда-то читал, но совсем забыл где и когда, и сейчас я просто не могу её найти, но я запомнил суть этой статьи, но я не уверен что запомнил и понял все верно.
Так как в js неявная типизация, то интерпретатор сам выбирает какой тип данных движок присвоит переменной. Например
/**
*
* Обычное число, дается тип int и выделяется 4 байта
*/
let a = 1;
Но, когда мы работаем с дробными числами, то нужно выделять 8 байт памяти. И, если мы преобразуем int в float на ходу, то процессор не может просто добавить ещё 4 ячейки памяти рядом с уже имеющимися. Ему нужно вытащить значение из 4-ех ячеек памяти, и переместить в новые 8 ячеек. Получается что:
// Первый вариант
let a = 1;
a += 0.5;
// Второй вариант
let a = 1.0;
a += 0.5;
Второй вариант более оптимальный, так как мы даем понять интерпретатору что нужно сразу выделить больше ячеек памяти, так как число с плавающей точкой. Насколько это правда? В чем я ошибаюсь?
Если это и так, маловероятно что это оказывает хоть сколько значимый результат на производительность кода. Это больше академический интерес, хочу разобраться как оно работает.
Схема в доке v8 говорит что у int всего 2 типа, int32 и unit32, а int8, int16, float32 etc. есть только у массивов. Получается, что все работает не так как я описал?