[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
[Урок] Оптимизация кода #1
Steep_NkДата: Воскресенье, 06.04.2014, 13:27 | Сообщение # 1
Прохожий
Группа: Пользователь
Сообщений: 37
Статус: Offline
Здравствуйте форумчане samp-ru.org! biggrin
Сейчас я хочу показать вам что такое оптимизация кода!
Я скачивал множество GM и FS с данного сайта, и понял, что далеко не все умеют оптимизировать код!

# 1 с чего я хочу начать, это - массивы
Массивы не когда не должны содержать латинских символов и первый их символ не должен быть числом!
Одномерные массивы:

Код
new massive1[MAX_PLAYERS];
Так как MAX_PLAYERS по умолчанию = 500 это далеко не хороший вариант использовать такой большой массив!

Двумерные массивы:

Код
new massive1[MAX_PLAYERS][47];
Допустим мы храним информацию об оружии игрока. Число weap у нас будет = 47
Тогда получается MAX_PLAYERS = 500 и число оружия = 47 (500*47=23500) Щекотливая цифра правда?

Решение таково:

У многих... а что там говорить? У всех, на сервере не играет 500 игроков, поэтому:

Код
#undef MAX_PLAYERS    
const MAX_PLAYERS = 50;// Количество слотов вашего сервера!

Данный код нужно вставить после include <a_samp>

Тем самым мы уменьшаем количество ячеек в массивах!

# 2 это булевые массивы (и все о true и false)

Начну с того о том, что такое булевый массив!
Булевый массив это массив который может быть равным только или 1 или 0

Если у вас есть такие массивы в коде то желательно перед ними добисать такой префикс bool:

Код
new bool:spawnPL[MAX_PLAYERS];

Например у нас есть проверка на спавн!
Код
public OnPlayerSpawn(playerid)
{
       spawnPL [playerid]= true;
       //тут все остальное...
       return 1;
}
В булевых массивах нужно использовать исключительно true и false
И проверки должны быть такими:
Код
if(spawnPL [playerid]!= true) return ...
if(spawnPL [playerid]>= false) return ... и тд!
Как вы заметили приводя пример со спавном я в конце паблика написал return 1;
Я заметил, что многие "программисты" утверждают: "Лучше использовать return true; и return false;"
Не слушайте их! Это пустая трата времени, т.к что 1 что true при компиляции в .amx занимают одинаковое кол-во памяти, и в этом нет никакой оптимизации!

Чтобы тема не получилась слишком большой! Сделаю остальное в другой теме! =)




Сообщение отредактировал Steep_Nk - Воскресенье, 06.04.2014, 13:28
 
  • Страница 1 из 1
  • 1
Поиск: