Skip to content

Commit 5b13553

Browse files
Всё наоборот!
1 parent e2ace7b commit 5b13553

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

shabloni-optimizatsii/lokalnost-dannih-data-locality.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -544,7 +544,7 @@ class AIComponent
544544

545545
> Как обычно с абсолютной уверенностью можно утверждать только о том что ничего абсолютного нет. В большинстве случаев компилятор C++ требует косвенности для вызова виртуального метода. Но в некоторых случаях компилятор может выполнить _развиртуализацию (devirtualization)_ и вызвать нужный метод статически, если знает конкретный тип получателя. Развиртуализация встречается еще чаще в языках с компиляцией на лету, таких как Java или JavaScript.
546546
547-
- _Это гибкий подход_. На самом деле динамическая диспетчеризация применяется потому что она дает нам мощный инструмент настройки поведения между объектами. Если вы хотите, чтобы разные сущности в вашей игре имели собственные стили рендеринга или обладали собственными специальными движениями и атаками, вам в этом помогут именно виртуальные методы. Попытка реализовать нечто подобное с помощью кода без виртуальных методов, у вас образуется громадное месиво конструкций типа switch.
547+
- _Это негибкий подход_. На самом деле динамическая диспетчеризация применяется потому что она дает нам мощный инструмент настройки поведения между объектами. Если вы хотите, чтобы разные сущности в вашей игре имели собственные стили рендеринга или обладали собственными специальными движениями и атаками, вам в этом помогут именно виртуальные методы. Попытка реализовать нечто подобное с помощью кода без виртуальных методов, у вас образуется громадное месиво конструкций типа switch.
548548

549549
- **Используйте отдельный массив для каждого типа:**
550550

@@ -638,4 +638,4 @@ class AIComponent
638638

639639
- Этот шаблон практически полностью основан на использовании последовательного массива гомогенных объектов. Время от времени вам наверняка придется добавлять или удалять из него объекты. Шаблон [Пул объектов (Object Pool)](pul-obektov-object-pool.md) как раз этому и посвящен.
640640

641-
- Игровой движок [Artemis](http://gamadu.com/artemis/) - один из первых и наверное самый известный из фреймворков, использующих ID в качестве игровой сущности.
641+
- Игровой движок [Artemis](http://gamadu.com/artemis/) - один из первых и наверное самый известный из фреймворков, использующих ID в качестве игровой сущности.

0 commit comments

Comments
 (0)