Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 6 из 6
  1. #1
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±

    try оптимизация переменных

    Где то я вычитал, что переменная равна 4 бита.
    PHP код:
    new darge//4 бита 
    И я подумал, а что если все переменные как бы сгруппировать, наример
    PHP код:
    new Text:TD_var[228]; // 228 переменных глобальных TD = 4 бита
    new PlayerText:PTD_var[1337]; // 1337 переменных TD для игроков = 4 бита
    // а еще пикапы, 3D тексты и т.д.
    // и того 4*2 = 8 бит или 1 байт 
    Вместо
    PHP код:
    new Text:one// = 4 бита
    new Text:two// = 4 бита
    new Text:three// = 4 бита
    new Text:four// = 4 бита
    // и того 4*4=16 бит или 2 байта 
    Вот мой вопрос такой: " это считает как оптимизация переменных " ? То есть мы используем одну переменную с n-количеством ячеек, чтобы использовать меньше переменных > меньше занятой оперативной памяти. Или смысла нет и каждая используемая/добавленная ячейка равна 4 битам. Пытался найти оф. документацию к языку, но не нашел. Ну если C++ схож с PAWN, то и это должно быть схожим.

  2. #2
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Каждая ячейка - 4 бита.

  3. Пользователь сказал cпасибо:
    Desulaid (26.04.2015)
  4. #3
    Аватар для NewGreen
    Пользователь

    Статус
    Оффлайн
    Регистрация
    29.09.2014
    Сообщений
    61
    Репутация:
    44 ±
    Размер переменной не 4 бита, а 4 байта что равно 32 битам.
    TD_var[228] - это массив, т.е. группа переменных объединенных одним именем, 228 - количество переменных в этой группе.
    228 * 4 байта = 912 байт
    Вот документация http://www.compuphase.com/pawn/Pawn_Language_Guide.pdf

  5. Пользователь сказал cпасибо:
    Desulaid (26.04.2015)
  6. #4
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Цитата Сообщение от NewGreen Посмотреть сообщение
    Размер переменной не 4 бита, а 4 байта что равно 32 битам.
    TD_var[228] - это массив, т.е. группа переменных объединенных одним именем, 228 - количество переменных в этой группе.
    228 * 4 байта = 912 байт
    Вот документация http://www.compuphase.com/pawn/Pawn_Language_Guide.pdf
    Эхх... было бы не плохо, если бы все было по моему плану :D

  7. #5
    Аватар для #Vito
    #define

    Статус
    Оффлайн
    Регистрация
    14.09.2013
    Адрес
    Одесса
    Сообщений
    129
    Репутация:
    38 ±
    А есть еще char

    Цитата Сообщение от Londlem Посмотреть сообщение
    Во-первых, массив с char может принимать значение от 0 до 255.
    Во-вторых, на счёт 24: Во время создания массива с типом char размер массива уменьшается в 4 раза. Но доступность к обращению ячейки не ограничивается. 100 / 4 = 25 ( 24 т.к. не даёт доступ к 25 части ).

    Если используете массив char, то во всех случаях нужно заключать ячейку в фигурные скобки:
    PHP код:
    test_array{551} = 255// 255 - максимальное значение для char 
    Цитата Сообщение от Londlem Посмотреть сообщение
    То есть покажу на примере:
    PHP код:
    new
        
    player_admin_level[MAX_PLAYERS char]; // уровень админки может быть от 0 до 255 
    Данный массив будет создан так:
    PHP код:
    new
        
    player_admin_level[500 char]; // массив на 500 игроков ( по умолчанию в a_samp.inc ) 
    Обращаемся к к игроку с ID 325 ( например, случайный ID ):
    PHP код:
    player_admin_level{325} = 5// установили игроку с ID 325 уровень админки на 5 
    То есть делаем всё тоже самое как и с обычным массивом, только стоит помнить, что: при вызове ячейки массива используем фигурные скобки ( а не квадратные ); расходуется в 4 раза меньше памяти, чем при создании обычного массива, тобишь:
    PHP код:
    new
        
    player_admin_level[MAX_PLAYERS]; // player_admin_level[500]
        // 4 * 500 = 2000 ( 4 байта ( любая переменная в pawn занимает 4 байта ( кроме char ) ) * 500 игроков = 2000 байт )

    new
        
    player_admin_level[MAX_PLAYERS char]; // player_admin_level[500 char]
        // 1 * 500 = 500 ( 1 байт теперь занимает 1 ячейка в памяти, так как мы использовали char-массив ) 
    Skype: vitya.saveliev


  8. Пользователь сказал cпасибо:
    Desulaid (26.04.2015)
  9. #6
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Цитата Сообщение от #Vito Посмотреть сообщение
    А есть еще char
    я о них только слышал, но никогда не использовал. Попробую с ними что-нибудь придумать.

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •