Страница 2 из 16 ПерваяПервая 123412 ... ПоследняяПоследняя
Показано с 11 по 20 из 158

Тема: Единая тема оптимизации

  1. #11
    ? FreeLancer ? Аватар для RastaOrecha
    Регистрация
    12.07.2011
    Адрес
    Челябинск
    Возраст
    26
    Сообщений
    1,857
    Репутация: 229

    Звание: - весьма и весьма положительная личность

    Re: Единая тема оптимизации

    В этом случае, у тебя суть потерялась. Так как в первом варианте у тебя стоит проверка на нахождении игрока в машине, а здесь получение ида. Так то ид можно получить рядом стоя с машиной. Мб должно быть так?
    Если игрок в машине, то вернёт id машины, а если нет, то 0 (т.е !GetPlayerVehicleID) так что всё ок.

    Точно не знаю, но мне кажется что констаты так же занимают память как и переменные.
    Нет, просто мне константой удобнее.

  2. #12
    ????????? Аватар для Константин
    Регистрация
    13.03.2011
    Адрес
    Омск
    Возраст
    27
    Сообщений
    2,032
    Репутация: 193

    Звание: - весьма и весьма положительная личность

    Re: Единая тема оптимизации

    Не очень. Оптимизация вот - "Почему не стоит использовать стринги длинной в 256 ячеек".
    Грехи других судить Вы так усердно рветесь, начните со своих и до чужих не доберетесь. © Уильям Шекспир

    Конкурс на знание pawn № 3
    Конкурс PAWN & Improvisation


  3. #13
    Проверенный Аватар для frog163
    Регистрация
    12.04.2010
    Адрес
    Samara
    Возраст
    31
    Сообщений
    4,548
    Репутация: 365

    Звание: - очень-очень хороший человек

    Re: Единая тема оптимизации

    Данный колбэк обновляется вроде ~25 раз за секунду и использовать его это то же самое, что и списать мод в список негодных.
    Если игрок не будет двигаться, то 1 раз в ~2 секунды, зависит от скорости обновления игрока(частота изменяется в конфиге, не помню точно какая настройка) и не обновляется совсем(кажется) если игрок в афк. А использовать колбек никто не запрещал, можно поставить проверку чтоб код в нем использовался не чаще чем раз в 200мс например (для всяких спидометров и античитов подойдет)
    Теперь посмотрим как она выглядит в оптимизированном виде:

    PHP код:
    new Float:health;
    for (new 
    0GetMaxPlayers(); i++)
    {
            if(!
    IsPlayerConnected(i)) continue; //Если игрок не подключен, то цикл пропустит итерацию
        
    if (GetPlayerHealth(ihealth)) SetPlayerHealth(ihealth 10.0);

    Обратите внимание на изменения, второй способ работает гораздо быстрее.
    Твой "оптимизированный вариант" будет работать еще медленней

    На счет твоего излюбленного форича - есть способ без подключения этого не маленького инклуда(1200 строк против ~10)
    т.к если функция в коде не применялось, то компилятор выдаст warining.
    а если функция будет в стоке, то компилятор просто пропустит ее..
    PHP код:
    new Player[MAX_PLAYERS];

    public 
    OnPlayerConnect(playerid)
    {
        
    Player[MAX_PLAYERS] += 1;

    Где ты такое видел? Ошибку же выдаст =\
    Точно не знаю, но мне кажется что констаты так же занимают память как и переменные.
    Но точно не знаю, если ошибаюсь, то поправьте меня
    все так

    Если игрок в машине, то вернёт id машины, а если нет, то 0 (т.е !GetPlayerVehicleID) так что всё ок.
    В итоге ты юзаешь 2 раза GetPlayerVehicleID, когда можно только раз, fail
    Ничто не ограничивает полет мысли программиста так, как компилятор, сцуко!
    Если в предложении собеседника различного рода смайлов больше чем слов - однозначно, что этот индивид страдает критической, неизлечимой и при этом прогрессирующей формой долбоебизма © лурка
    PAWN Compiler делает то, что вы приказали ему сделать, а не то, что вы хотели, чтобы он сделал..

  4. #14
    Перевыпроверенный Аватар для LINKINPARK
    Регистрация
    29.08.2011
    Сообщений
    1,732
    Репутация: 210

    Звание: - весьма и весьма положительная личность

    Re: Единая тема оптимизации

    PHP код:
    if (GetPlayerHealth(ihealth)) 
    мне одному показалось это странным?

  5. #15
    Проверенный Аватар для frog163
    Регистрация
    12.04.2010
    Адрес
    Samara
    Возраст
    31
    Сообщений
    4,548
    Репутация: 365

    Звание: - очень-очень хороший человек

    Re: Единая тема оптимизации

    Цитата Сообщение от LinkiNPar[K] Посмотреть сообщение
    PHP код:
    if (GetPlayerHealth(ihealth)) 
    мне одному показалось это странным?
    Вообще топик странный xD
    Ничто не ограничивает полет мысли программиста так, как компилятор, сцуко!
    Если в предложении собеседника различного рода смайлов больше чем слов - однозначно, что этот индивид страдает критической, неизлечимой и при этом прогрессирующей формой долбоебизма © лурка
    PAWN Compiler делает то, что вы приказали ему сделать, а не то, что вы хотели, чтобы он сделал..

  6. #16
    Активный пользователь Аватар для RussianTech
    Регистрация
    23.10.2012
    Адрес
    Волгоград
    Сообщений
    284
    Репутация: 28

    Звание: на пути к лучшему

    Re: Единая тема оптимизации

    Спасибо, возьму себе на заметку примеры.

  7. #17
    Проверенный
    Регистрация
    21.09.2011
    Сообщений
    1,015
    Репутация: 178

    Звание: - весьма и весьма положительная личность

    Re: Единая тема оптимизации

    Прилагайте к вашим тестам еще время выполнения, на 100 000 оборотов например

  8. #18
    Проверенный
    Регистрация
    21.09.2011
    Сообщений
    1,015
    Репутация: 178

    Звание: - весьма и весьма положительная личность

    Re: Единая тема оптимизации

    Я тут замеры скорости проводить стал. Первый вариант с жизнями оказался быстрее
    PHP код:
    stock CallTest()
    {
        new 
    gg GetTickCount();
        for(new 
    b100000b++)
        {
                new 
    Float:health;
                for (new 
    0MAX_PLAYERSi++) //при условии что MAX_PLAYERS = 50
                
    {
                    if (
    IsPlayerConnected(i))
                    {
                        
    GetPlayerHealth(ihealth);
                        
    SetPlayerHealth(ihealth 10.0);
                    }
                }
        }
        
    printf("1 = %d",GetTickCount()-gg);

        
    gg GetTickCount();
        for(new 
    b;100000b++)
        {
                new 
    Float:health;
                for (new 
    0GetMaxPlayers(); i++)//при условии что GetMaxPlayers() = 50
                
    {
                        if(!
    IsPlayerConnected(i)) continue; //Если игрок не подключен, то цикл пропустит итерацию
                        
    if (GetPlayerHealth(ihealth)) SetPlayerHealth(ihealth 10.0);
                }
        }
        
    printf("2 = %d",GetTickCount()-gg);

    Результат:

    [12:25:11] 1 = 188
    [12:25:13] 2 = 2333

  9. #19
    Активный пользователь Аватар для Mainstone
    Регистрация
    19.09.2011
    Адрес
    Тбилиси
    Сообщений
    2,523
    Репутация: 85

    Звание: скоро придёт к известности

    Re: Единая тема оптимизации

    получение игркоа можно ткаим спомобом:
    xD
    збс
    Comeback is real.

  10. #20
    ? FreeLancer ? Аватар для RastaOrecha
    Регистрация
    12.07.2011
    Адрес
    Челябинск
    Возраст
    26
    Сообщений
    1,857
    Репутация: 229

    Звание: - весьма и весьма положительная личность

    Re: Единая тема оптимизации

    Твой "оптимизированный вариант" будет работать еще медленней
    Хммм... большинство брал с топика оптимизации Y_Less'а.

    Не очень. Оптимизация вот - "Почему не стоит использовать стринги длинной в 256 ячеек".
    С того же топика

    На счет твоего излюбленного форича - есть способ без подключения этого не маленького инклуда(1200 строк против ~10)
    Позже ещё вариант добавлю


    P.S: http://forum.sa-mp.com/showthread.php?t=57018



    Код:
    PAWN:
    
    • [PAWN Wiki] Пишем регистрацию с 0 на Y_INI
    • [PAWN Wiki] Использование YCMD (y_commands) + SSCANF 2.x
    • [PAWN Wiki] Использование Y_Timers
    • [PAWN Wiki] Разделяем мод на инклуды (y_hooks)
    • [PAWN Wiki] Использование UVar
    • [PAWN Wiki] Единая тема оптимизации
    • [Интересные комманды] Cмена ника MySQL 
    • [Интересные комманды] Full Set
    • [Интересные комманды] Телепорт по указанным координатам 
    • [Скрипты и инклуды] jBank System [version 1]
    • [Скрипты и инклуды] jRegistration System
    
    Lua:
    • [Wiki] Создание мода с 0
    • [Wiki] Дерево элементов | new
    • [Wiki] Бинд клавиш или комманда на кнопку
    • [Func] eachOther (повторение числа/строки) | new
    Маппинг:
    
    • [MAP] Квартира в центре (приятный вид)
    • [Source] Маленькое помещение с видом из окна
    • [Source] Пустое помещение с панорамными окнами
    
    HTML, JavaScript:
    
    • [HTML] Подключение таблицы стилей CSS к HTML
    • [HTML][CSS] Красивый текст снизу картинки
    
    C#, C++ :
    
    • [C++] Действие на кнопку (при нажатии на кнопку)
    • [C++] Работа с файлами
    • [C++] Склоняем






    “When you have insomnia, you're never really asleep. And you're really awake.”
    “Никогда не указывайте на ошибки, если не знаете, как их исправить.” - Бернард Шоу.
    “Если ты способен выдумать что-то, ты можешь и сделать это.” - Уолт Дисней.
    “Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей.” - Элеонор Рузвельт.

Страница 2 из 16 ПерваяПервая 123412 ... ПоследняяПоследняя

Похожие темы

  1. Вопрос по оптимизации
    от Clarita1996 в разделе Вопросы по скриптингу
    Ответов: 10
    Последнее сообщение: 03.11.2012, 21:33
  2. Ответов: 16
    Последнее сообщение: 09.12.2011, 17:42
  3. Вопрос по оптимизации
    от happines в разделе Вопросы по скриптингу
    Ответов: 0
    Последнее сообщение: 01.07.2011, 11:00
  4. Помогите в оптимизации
    от ruslan в разделе Вопросы по скриптингу
    Ответов: 1
    Последнее сообщение: 30.03.2011, 20:28

Ваши права

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