История изменений
Исправление special-k, (текущая версия) :
А вот это не правда, известно, что замедление динамически типизированных языков в зависимости от роста проекта линейное, а статически типизированных экспоненциальное.
Можно по другому сказать. Падение скорости на крупных проектах у динамически типизированных языков предсказуемо, а у статически типизированных - нет.
В языке Java поддерживается несколько типов выполнения операций над объектами:
- арифметические операции с примитивными типами данных; например, сложение и вычитание целых чисел;
- вызов статического метода;
- вызов виртуального метода;
- вызов виртуального метода через интерфейс;
- вызов посредством рефлексии (reflexion).
Каждый последующий тип вызова выполняется в несколько раз медленнее предыдущего, а последний - даже в десятки-сотни раз медленнее. То есть мы имеем ситуацию, при которой одни типы вызовов предпочтительнее других. Для производительности лучше будет обходиться статическими вызовами и минимальным количеством виртуальных. Но реальные, хорошо спроектированные приложения, как правило, обладают высокой степенью полиморфизма.
Поэтому процент использования виртуальных методов может быть значительным, что существенно снижает производительность. Есть категория приложений, в которых время вызовов посредством рефлексии начинает доминировать. Все это приводит к тому, что время выполнения приложений увеличивается нелинейным образом относительно сложности проекта.
Исправление special-k, :
А вот это не правда, известно, что замедление динамически типизированных языков в зависимости от роста проекта линейное, а статически типизированных экспоненциальное.
Можно по другому сказать. Падение скорости на крупных проектах у динамически типизированных языков предсказуемо, а у статически типизированных - нет.
Исходная версия special-k, :
А вот это не правда, известно, что замедление динамически типизированных языков в зависимости от роста проекта линейное, а статически типизированных экспоненциальное.