• Уважаемый Гость.
    - Прежде чем создать свою тему, пожалуйста, попробуй воспользоваться этим -> ПОИСКОМ !!!
    - После решения Вашего вопроса (проблемы) - нажмите "Лучший ответ", на сообщении, которое его решило. За игнорирование этого действия - Вы получите соответствующее предупреждение. Мы - стараемся Вам помочь. Уделите 10 секунд - чтобы нажать кнопку. (Если у Вас нет такой возможности - укажите в последнем своем сообщении какой ответ Вы считаете лучшим. Наши модераторы сделают это за Вас)
    ЗАПРЕЩЕНО:
    - Cоздавать темы с названиями "Помогите", "Плиз", "Ошибка", "Не могу найти", "Хелп" и тому подобное;
    - Cоздавать темы без детального описания того, что нужно исправить.
    - Cоздавать темы из одного скриншота.
    За игнор правил форума - Ваша тема будет удалена, а Вы получите системное предупреждение.

Вопрос по оптимизации кода (for / switch)

Статус
В этой теме нельзя размещать новые ответы.

usefull

Новичок
Доброго времени уважаемые форумчани.
Появился вопрос. Как считаете, какой код лучше в плане оптимизации?

Постановка задачи: сделать гонку с помощью чекпоинов. Допустим есть 3 разновидности пути.

// Объявляем массив наших переменных (в дальнейшем создадим 3 таких разновидности)
PHP:
static const Float:ds_checkpoints[11][3] = {
    { -722.1814, 1202.5670, 15.8677 },
    { -609.8699, 1187.9164, 15.8457 },
    { -520.2291, 1220.2211, 20.5547 },
    { -385.8148, 1140.9373, 11.8145 },
    { -385.3184, 978.9647, 11.8129 },
    { -371.0644, 1098.3403, 11.8158 },
    { -491.6584, 1231.8890, 19.6879 },
    { -578.5715, 1191.2545, 15.8721 },
    { -578.5715, 1191.2545, 15.8721 },
    { -736.1435, 1209.8857, 15.8742 },
    { -871.3302, 1196.2150, 10.3069 }
};
// Объявляем PVar для игрока (стадия)
PHP:
SetPVarInt(playerid, "checkpoint", 0);
// Проверка в OnPlayerEnterRaceCheckpoint
PHP:
new checkpoint = GetPVarInt(playerid, "checkpoint");
SetPlayerRaceCheckpoint(playerid, 0, ds_checkpoints[checkpoint][0], ds_checkpoints[checkpoint][1], ds_checkpoints[checkpoint][2], 0.0, 0.0, 0, 4);
SetPVarInt(playerid, "checkpoint", checkpoint + 1);
if(checkpoint == MAX_CHECKPOINTS - 1) {
    DisablePlayerRaceCheckpoint(playerid);
    DeletePVar(playerid, "checkpoint");
    // ... etc
}
Код:
enum {
    CHECKPOINT_1,
    CHECKPOINT_2,
    CHECKPOINT_3
    //...
}
// Отдельная проверка чекпоинтов
PHP:
new checkpoint = GetPVarInt(playerid, "checkpoint");
switch(checkpoint) {
    case CHECKPOINT_1: {
        SetPlayerRaceCheckpoint(playerid, 0, -722.1814, 1202.5670, 15.8677, -609.8699, 1187.9164, 15.8457, 4);
        SetPVarInt(playerid, "checkpoint", checkpoint + 1);
    }
    case CHECKPOINT_2: {
        SetPlayerRaceCheckpoint(playerid, 0,-609.8699, 1187.9164, 15.8457, -520.2291, 1220.2211, 20.5547, 4);
        SetPVarInt(playerid, "checkpoint", checkpoint + 1);
    }
    case CHECKPOINT_3: {
        SetPlayerRaceCheckpoint(playerid, 0,-385.8148, 1140.9373, 11.8145, -385.3184, 978.9647, 11.8129, 4);
        SetPVarInt(playerid, "checkpoint", checkpoint + 1);
    }
    case CHECKPOINT_4: {
        SetPlayerRaceCheckpoint(playerid, 0,-385.3184, 978.9647, 11.8129, -371.0644, 1098.3403, 11.8158, 4);
        SetPVarInt(playerid, "checkpoint", checkpoint + 1);
    }
    // ...
}

По DataSize во втором случае больше размер.
И есть ли советы какие-то по оптимизации данного кода?

Всем хорошего дня, заранее thank u.
 
Последнее редактирование модератором:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу