LINUX.ORG.RU

История изменений

Исправление special-k, (текущая версия) :

А вот это не правда, известно, что замедление динамически типизированных языков в зависимости от роста проекта линейное, а статически типизированных экспоненциальное.

Можно по другому сказать. Падение скорости на крупных проектах у динамически типизированных языков предсказуемо, а у статически типизированных - нет.

В языке Java поддерживается несколько типов выполнения операций над объектами:

  • арифметические операции с примитивными типами данных; например, сложение и вычитание целых чисел;
  • вызов статического метода;
  • вызов виртуального метода;
  • вызов виртуального метода через интерфейс;
  • вызов посредством рефлексии (reflexion).

Каждый последующий тип вызова выполняется в несколько раз медленнее предыдущего, а последний - даже в десятки-сотни раз медленнее. То есть мы имеем ситуацию, при которой одни типы вызовов предпочтительнее других. Для производительности лучше будет обходиться статическими вызовами и минимальным количеством виртуальных. Но реальные, хорошо спроектированные приложения, как правило, обладают высокой степенью полиморфизма.

Поэтому процент использования виртуальных методов может быть значительным, что существенно снижает производительность. Есть категория приложений, в которых время вызовов посредством рефлексии начинает доминировать. Все это приводит к тому, что время выполнения приложений увеличивается нелинейным образом относительно сложности проекта.

Исправление special-k, :

А вот это не правда, известно, что замедление динамически типизированных языков в зависимости от роста проекта линейное, а статически типизированных экспоненциальное.

Можно по другому сказать. Падение скорости на крупных проектах у динамически типизированных языков предсказуемо, а у статически типизированных - нет.

Исходная версия special-k, :

А вот это не правда, известно, что замедление динамически типизированных языков в зависимости от роста проекта линейное, а статически типизированных экспоненциальное.