Я подумал, что, возможно, интерпретатор ruby выполняет аналогичную работу, что потенциально может означать, что проверка типов может увеличить скорость интерпретации
Пока нет, но потенциально можно построить это за один день.
Целью Sorbet было создание системы типов для людей, по сравнению с созданием системы типов для компьютеров (компилятор). Это может привести к некоторому снижению производительности, но поскольку Stripe запускает его в производство, мы контролируем его. Внутренне, мы обращаемся к нам, если накладные расходы составляют> 7% времени процессора.
Я немного прочитал языки с динамической типизацией (в частности, Javascript в данном случае) и обнаружил, что если мы продолжим посылать некоторые функции (например, foo) одного и того же типа объектов, движок выполнит некоторую работу по оптимизации этой функции, поэтому что, когда он снова вызывается с теми же типами, работа по интерпретации будет быстрее.
Да, это можно сделать. То, что вы описываете, является общей оптимизацией в компиляторах Just-In-Time (JIT). Техника, на которую вы, похоже, ссылаетесь, использует профилирование во время выполнения и фактически является обычной альтернативной техникой, которая позволяет достичь этого результата при отсутствии системы типов. Стоит также отметить, что хорошо построенные JIT могут делать это чаще, чем система типов, поскольку система типов кодирует то, что может , в то время как профилирование и JIT могут оптимизировать то, что на самом деле происходит на практике .
Тем не менее, создание JIT часто гораздо более трудоемкий процесс, чем создание онлайн-компилятора, поэтому, в зависимости от объема инвестиций, которые нужно инвестировать в ускорение Ruby, использование JIT или использование типов может оказаться лучше в разных реальных условиях. мир ограничивает.
Я подумал, что, возможно, интерпретатор ruby выполняет аналогичную работу, что потенциально может означать, что проверка типов может увеличить скорость интерпретации
Подводя итог предыдущему абзацу, система типов Sorbet в настоящее время не ускоряет Ruby, но и не сильно его замедляет.
Системы типов могут действительно использоваться для ускорения языков, но они не единственный инструмент, поскольку основным конкурентом является профилирование и компиляция JIT.