Замена флагов в самп

Обновлено: 29.06.2024

Пользователь офлайн

m1n1vv


Если у вас есть, допустим, 100 переменных логического типа, то вы будете использовать 195 Кб пространства. Используя 4 массива с флагами, вы затратите только 8 Кб. Результат будет тот же, но вы сэкономите 187 Кб пространства.

Как это используется:

Автор урока: Slice
Перевел и доработал: m1n1vv

Пользователь офлайн

VVWVV

Пользователь офлайн

m1n1vv


Пользователь офлайн

PHARA_OH


Если у вас есть, допустим, 100 переменных логического типа, то вы будете использовать 195 Кб пространства. Используя 4 массива с флагами, вы затратите только 8 Кб. Результат будет тот же, но вы сэкономите 187 Кб пространства.

Как это используется:

Автор урока: Slice
Перевел и доработал: m1n1vv

То есть, лучше использовать флаги вместо char?

Пользователь офлайн

Sonic X


"Смотря, что для вас важнее: производительность или расход памяти.
В одной ячейке 32 бита (4 байта) и если использовать их все, то можно нехило сэкономить память. Но следует учесть и то, что для достижения такой экономии при каждом обращении к переменной приходится выполнять побитовые сдвиги, сложение, etc., из-за чего доступ к переменной с флагами становится медленнее, чем к обычной переменной, т.е. приходится жертвовать производительностью.

Кроме того, для выполнения тех побитовых операций будут генерироваться дополнительные инструкции в секции кода, которые будут занимать лишнее место (да, код, как и данные, тоже имеет размер). Как результат, выгода от использования флагов может свестись на нет как в плане производительности, так и в плане расхода памяти.

Если вы будете использовать 100 переменных типа bool для каждого игрока (MAX_PLAYERS), то вы будете тратить 195 Кб памяти.
Однако, если вы будете использовать 4 массива с флагами, то вы затратите только 8 КБ.

Вот только в реальности вряд ли можно встретить структуру инфы об игроке с 100 и более переменными типа bool. Разве что если есть какая-нибудь система достижений - вот такое точно следует переводить на флаги.

Как вы могли уже понять, нельзя однозначно говорить о пользе/вреде использования флагов - всё зависит исключительно от ситуации, в которой вы хотите их использовать.
В общем, это довольно сложная тема, не предназначенная для новичков, и если вы что-то не поняли из моих слов выше, лучше делайте всё по старому и не усложняйте себе жизнь, раз не понимаете, что к чему в этих флагах." - Daniel_Cortez

Пользователь офлайн

SooBad

Читайте также: