Ответы пользователя по тегу V8.js
  • Как на самом деле работают типы данных в js?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Это больше академический интерес, хочу разобраться как оно работает.

    Это вы сейчас в очень глубокую нору заглядываете.

    Движки стараются оптимизировать по максимуму, поэтому там очень много всего накручено помимо наличия int32.
    Я не удивлюсь если в вашем конкретно примере они сделают просто a=1.5 в обоих случаях и код будет идентичный до байта.
    а потом эту a подставят куда надо и оптимизируют там еще что-то, например b=c+a превратится в b=c+1.5

    кроме того, есть разные компиляторы - которые генерируют оптимальный код для частных случаев, или более "общий" но более медленный.

    Например для каждой переменной во время работы записывается какой тип в нее приходит, если этот участок кода вызывается достаточно часто - он помечается "горячим" и затем смотрится, если у вас в "a" всегда один и тот же тип, то генерируется быстрый код для этого типа, и ставятся проверки, если вдруг придет что-то другое, то этот код выкидывается и происходит возврат к более общему.

    И много чего другого, лишь бы быстрее работало.
    Даже если вы прямо сейчас разберетесь во всем, то завтра запилят новую оптимизацию где-то в глубине движка и что-то будет работать уже по другому.
    Ответ написан
    8 комментариев