Re: Оптимизация кода -
DANGER1979 - 08.08.2011
Степашка, ты ни где не используешь IsPlayerConnected в цыклах?
хотя при использовании foreach это нормально.
Но я даже при онлайне 300 не использовал foreach, а использовал IsPlayerConnected и лагов не было.
Основные лаги приходятся когда построение кода кривое или где то тачки спаунятся друг на друге, или где то большое скопление народа или машин.
ф-ия format в 1000 раз педальнее всего того, что ты оптимизируешь. А без неё никак.
Re: Оптимизация кода -
Stepashka - 08.08.2011
Quote:
Originally Posted by DANGER1979
Степашка, ты ни где не используешь IsPlayerConnected в цыклах? ![Confused](images/smilies/confused.png)
|
нет, я бегаю по созданному мной массиву содержащему только ID активных юзверей.
Re: Оптимизация кода -
DANGER1979 - 08.08.2011
я с тобой согласен. Это правильно. Просто надо самому типа foreach написать, то тогда будет всё гуд.
Т.к. ******a у меня глючил.
Но я считаю что для игроков можно и IsPlayerConnected применять, а вот для тачек надо действительно делать динамические массивы.
Re: Оптимизация кода -
Stepashka - 08.08.2011
Я итак свой foreach написал, а от ******a он перегружен лишним.
Re: Оптимизация кода -
Romanius - 08.08.2011
Quote:
Originally Posted by Stepashka
Я итак свой foreach написал, а от ******a он перегружен лишним.
|
читаем код, и доки и юзаем макросы. и изобретать велосипед не приходица
Re: Оптимизация кода -
Stepashka - 08.08.2011
Quote:
Originally Posted by Romanius
читаем код, и доки и юзаем макросы. и изобретать велосипед не приходица
|
"не учи отца ***ться" © народная мудрость
Re: Оптимизация кода -
HappyScripter - 08.08.2011
Можно как вариант иметь переменную, в которой будет всегда максимальный ИД игрока на данный момент. Тогда пробежаться по ИДам онлайн игроков получиться быстрее
PHP Code:
for ( new id = maxPlayerId; id >= 0; --id )
{
if ( IsPlayerConnected(id) )
{
}
}
Но это скорее "золотая середина" в данном вопросе, потому что самым быстрым решением все равно будет непрерывный массив с ИДами онлайн игроков и переменная с индексом последнего ИДа в данном массиве.
Re: Оптимизация кода -
Stepashka - 08.08.2011
Quote:
Originally Posted by HappyScripter
и переменная с индексом последнего ИДа в данном массиве.
|
в сибирь её: заполняешь массиы INVALID_PLAYER_ID, и как только в него уперлись обрываем цикл.
Re: Оптимизация кода -
HappyScripter - 08.08.2011
Quote:
Originally Posted by Stepashka
в сибирь её: заполняешь массиы INVALID_PLAYER_ID, и как только в него уперлись обрываем цикл.
|
А зачем тогда эта оптимизация, если Вы заполняете ненужные слоты - заглушками? Их не надо трогать и пусть там лежат какие-то числа от предыдущих изменений массива. Главное знать размер актуальной части массива, который равен кол-ву онлайн игроков.
Re: Оптимизация кода -
Stepashka - 08.08.2011
Quote:
Originally Posted by HappyScripter
А зачем тогда эта оптимизация, если Вы заполняете ненужные слоты - заглушками? Их не надо трогать и пусть там лежат какие-то числа от предыдущих изменений массива. Главное знать размер актуальной части массива, который равен кол-ву онлайн игроков.
|
а какая разница, память то под массив все равно выделена в полном объеме, а по этим ячейкам я все равно не бегаю, и заполнены они при инициализации массива.
Re: Оптимизация кода -
eakwarp - 22.04.2012
Quote:
Originally Posted by Be$$0n
|
Компилятор не виснет, он просто долго обрабатывает большой свич. Тем не менее, один хрен, только в профиль, оптимизировать тут нечего.
Re: Оптимизация кода -
ZiGGi - 22.04.2012
Quote:
Originally Posted by Be$$0n
|
В твоём случае лучше использовать конструкцию if/else - будет быстрее
Re: Оптимизация кода -
stabker - 24.04.2012
Quote:
Originally Posted by eakwarp
Компилятор не виснет, он просто долго обрабатывает большой свич. Тем не менее, один хрен, только в профиль, оптимизировать тут нечего.
|
{
Здесь для каждой цены действия разные? Пример покажи что там выполнять именно хочешь
}
Re: Оптимизация кода -
Be$$0n - 25.04.2012
Quote:
Originally Posted by stabker
{
Здесь для каждой цены действия разные? Пример покажи что там выполнять именно хочешь
}
|
Да, разные, просто установка значений переменным.
Re: Оптимизация кода -
Evansive - 08.05.2012
Quote:
Originally Posted by ZiGGi
В твоём случае лучше использовать конструкцию if/else - будет быстрее ![Wink](images/smilies/wink.png)
|
Как вариант создать массив с ценами. Код будет красивее смотреццо
Re: Оптимизация кода -
Baks - 08.05.2012
Сегодня столкнулся с проблемкой, почему нельзя записывать
PHP Code:
dcmd(Test1, 5, cmdtext);
dcmd(Test2, 5, cmdtext);
dcmd(Test3, 5, cmdtext);
подобное в строчку? Точнее можно, но максимум 2-3 штуки, если больше, то pawno просто напросто зависает и даже при закрытии остается в работающих процессах...
Re: Оптимизация кода -
DartfoL - 08.05.2012
При компиляции это заменяется дефайном на другой код. И когда в одной строчке много одинакого заменяемого кода, то компилятор начинает тупить, неправильно заменяет и виснит
Re: Оптимизация кода -
Evansive - 08.05.2012
Quote:
Originally Posted by Baks
Сегодня столкнулся с проблемкой, почему нельзя записывать
PHP Code:
dcmd(Test1, 5, cmdtext); dcmd(Test2, 5, cmdtext); dcmd(Test3, 5, cmdtext);
подобное в строчку? Точнее можно, но максимум 2-3 штуки, если больше, то pawno просто напросто зависает и даже при закрытии остается в работающих процессах...
|
Там дефайн юзается, поэтому так.
Да и вообще, dcmd - прошлый век же.
Re: Оптимизация кода -
Jon_De - 18.08.2012
Давно что то тему не поднимали, такой вопрос-
По моим замерам все паблики под глобальными таймерами и циклами(античиты и тд) выполняются за 0.8 мсек где то
OnPlayerCommandText по старинке с strcmp выполняется около 1 мсек в случае ввода несуществующей команды (т.е. пробег по всем strcmp)
OnPlayerText итого меньше (даже замерять не стал)
OnPlayerUpdate примерно 6 мсек рассчитывая на то, что сервер забит
Итого выполнение сценария занимает около 10-15мсек из секунды
Откуда тогда берутся неровности и дергания в синхронизации, особенно когда стоит много игроков в 1 месте, неужели на столько влияют настройки конфига (я его особо не трогал и не настраивал)? Возьмем тот же
самп-рп, где в пик онлайна довольно гладко всё идет. Вопрос про хостинг отпадает сразу, он не загружен выше 20%
Re: Оптимизация кода -
Mutha_X - 19.08.2012
Надо проверить пропускную способность хоста, т.к. раздаваемый трафик не прямо пропорционален кол-ву игроков, а каждому игроку сообщает сведения о каждом застримено к нему других игроков, если для некоторой сцены надо вычислить потребляемый трафик (за момент обновления данных, а не n секунд), то вот лови формулу: x * (x-1) * k, где x-игроков в "сцене", k - y байтов переданных клиенту, плюс надо учесть активность каждого игрока за секунду. А там где ты написал - в людных местах бывает много афкшников собирается тем более.