Оптимизация кода
#21

Кстати, никто не задумывался сформировать перечень основных правил и принципов оптимизации?(Я именно самп имею ввиду если кто не понял.)
Reply
#22

Чтобы сделать список решений, нужно иметь список четких задач. Предыдущая задача по оптимизации циклов перебора игроков, это всего лишь одна из многих, которые сначала нужно обозначить и назвать.

Есть одна оптимизация, которой никто почти не следует - оптимизация вида кода (: отступы, коменты, последовательность, группы, описания функций в коментах, правильные переносы и т.д.
Reply
#23

Quote:
Originally Posted by MX_Master
Чтобы сделать список решений, нужно иметь список четких задач. Предыдущая задача по оптимизации циклов перебора игроков, это всего лишь одна из многих, которые сначала нужно обозначить и назвать.
Будем смотреть на вещи реально, существует всего одна задача, превратить некий код, в быстро работающий. И топаем от этой вводной
Reply
#24

JesterX, чем тебе ZCMD не угодил? Проводил тест, действительно, работает быстрее, чем стандартный паблик OnPlayerCommandText.
Кстати, раз уж вопрос о оптимизации, то думаю, немало слышали, что Куй сделал PVar's, сегодня переводил все переменные игрока на эти пивары, и тут при использовании функции возврата GetPVarString, он мне возвращает, какие-то аракули "ЯЯЯЯЯяяяяяяяЯЯЯЯ", действительно-ли, пивары не работают с русскими символами O_O?
Reply
#25

Quote:
Originally Posted by Toney
JesterX, чем тебе ZCMD не угодил? Проводил тест, действительно, работает быстрее, чем стандартный паблик OnPlayerCommandText.
Кстати, раз уж вопрос о оптимизации, то думаю, немало слышали, что Куй сделал PVar's, сегодня переводил все переменные игрока на эти пивары, и тут при использовании функции возврата GetPVarString, он мне возвращает, какие-то аракули "ЯЯЯЯЯяяяяяяяЯЯЯЯ", действительно-ли, пивары не работают с русскими символами O_O?
дедовский способ применяйте к этому - пробел в начале. Ну или fixchars
Reply
#26

Toney, тем и не угодил, что dcmd работает быстрее чем zcmd.
Reply
#27

Quote:
Originally Posted by Eakwarp [Valakas.ru
]
Quote:
Originally Posted by MX_Master
Чтобы сделать список решений, нужно иметь список четких задач. Предыдущая задача по оптимизации циклов перебора игроков, это всего лишь одна из многих, которые сначала нужно обозначить и назвать.
Будем смотреть на вещи реально, существует всего одна задача, превратить некий код, в быстро работающий. И топаем от этой вводной
Пока тут был показан лишь 1 код, который нужно было оптимизировать. Оптимизировали. Других кодов не поступало. И че, это значит мона забыть про оптимизацию? (: Могу поспорить у каждого из вас в любом вашем скрипте/моде/фс такая свалка кода неоптимизированного лежит. А рассуждаемс о правилах оптимизации еще. Разве нет?
Reply
#28

Quote:
Originally Posted by JesterX
Toney, тем и не угодил, что dcmd работает быстрее чем zcmd.
Эм.. те кто такое наврал, проведя небольшой тест, zcmd оказался в разы быстрее
Reply
#29

Quote:
Originally Posted by MX_Master
Quote:
Originally Posted by Eakwarp [Valakas.ru
]
Quote:
Originally Posted by MX_Master
Чтобы сделать список решений, нужно иметь список четких задач. Предыдущая задача по оптимизации циклов перебора игроков, это всего лишь одна из многих, которые сначала нужно обозначить и назвать.
Будем смотреть на вещи реально, существует всего одна задача, превратить некий код, в быстро работающий. И топаем от этой вводной
Пока тут был показан лишь 1 код, который нужно было оптимизировать. Оптимизировали. Других кодов не поступало. И че, это значит мона забыть про оптимизацию? (: Могу поспорить у каждого из вас в любом вашем скрипте/моде/фс такая свалка кода неоптимизированного лежит. А рассуждаемс о правилах оптимизации еще. Разве нет?
Как и у вас, я более чем уверен.
Reply
#30

zcmd в разы быстрее чем dcmd и стандартный способ работы с командами

и кстати вот функция fixchars (у кого нету)
Code:
stock FixChars(string[]) for (new i=0;i<strlen(string);i++) if (string[i] < 0) string[i] += 256;
Reply
#31

Eakwarp
В том-то и дело, что у меня такого нет. Достаточно посмотреть мои релизы скриптов и библиотек. Бери любой другой релиз, скрипт из него и сравни по оптимизации. Возми и сравни свои скрипты с моими. И потом уже можешь что-то сказать про мои скрипты (: а не так как сейчас - голословно.
Reply
#32

Вот написал функцию которая вытаскивает из PVar'ов русский буквы

Code:
stock GetPVarStringEx(playerid, varname[], string_return[], len) // Modifed by Romanius (bug with Russian letters)
{
	if(GetPVarType(playerid, varname) == PLAYER_VARTYPE_STRING)
	{
	  GetPVarString(playerid, varname, string_return, len);
	  for(new i = 0;i < strlen(string_return); i++) if(string_return[i] < 0) string_return[i] += 256;
	  return true;
	}
	return false;
}
и макрос для облегчения труда

Code:
#define GetPVarString GetPVarStringEx
Reply
#33

pawn Code:
stock GetPVarStringEx(playerid, varname[], string_return[], len) // Modifed by Romanius (bug with Russian letters)
{
    if(GetPVarType(playerid, varname) == PLAYER_VARTYPE_STRING)
    {
      GetPVarString(playerid, varname, string_return, len);
      //for(new i = 0; i < strlen(string_return); i++) if(string_return[i] < 0) string_return[i] += 256; или      
      //for(new i = 0, len = strlen(string_return); i != len; i++) if(string_return[i] < 0) string_return[i] += 256; // ну и этот тоже норм :)
       for(new i = 0; string_return[i] != '\0'; i++) if(string_return[i] < 0) string_return[i] += 256; // или этот самый ловкий, так как не вычисляет длину строки
      return true;
    }
    return false;
}
Оптимизация
Reply
#34

Короче, сделал я вывод, к чёрту эти пивары, они компенсируются, придётся снова переделывать на массивы... Буду лишь использовать для мелких флагов, переменных, а хранить все переменные игрока (сохраняемые) буду только в массивах.
Reply
#35

Quote:
Originally Posted by MX_Master
Eakwarp
В том-то и дело, что у меня такого нет. Достаточно посмотреть мои релизы скриптов и библиотек. Бери любой другой релиз, скрипт из него и сравни по оптимизации. Возми и сравни свои скрипты с моими. И потом уже можешь что-то сказать про мои скрипты (: а не так как сейчас - голословно.
Не суть, суть в формировании правил написания кода, и по всей видимости исходя из ваших знаний.
Reply
#36

Лично я не понимаю, зачем надо было городить PVar'ы, это же не тот опиум для народа, которого ждут игроки и скриптеры. Типа, чтобы был виден прогресс в разработке (: По игре бы возможностей больше а не пиваров пачку. Пивары мона самому плагином добавить в крайнем случае.

Экономия памяти за счет этих пиваров не так уж и критична. Вот GVar уже что-то в плане оптимизации.
Reply
#37

Quote:
Originally Posted by MX_Master
Лично я не понимаю, зачем надо было городить PVar'ы, это же не тот опиум для народа, которого ждут игроки и скриптеры. Типа, чтобы был виден прогресс в разработке (: По игре бы возможностей больше а не пиваров пачку. Пивары мона самому плагином добавить в крайнем случае.

Экономия памяти за счет этих пиваров не так уж и критична. Вот GVar уже что-то в плане оптимизации.
в корне не согласен, если ты не нашел для них применение это ещё не значит что они бесполезны. Я вот нашел им применение и не брезгую их использовать. У них есть одно неоспоримое преймущество, когд аигрок уходит с сервера они автоматически удаляются.
Reply
#38

Quote:
Originally Posted by stepmex
в корне не согласен, если ты не нашел для них применение это ещё не значит что они бесполезны. Я вот нашел им применение и не брезгую их использовать. У них есть одно неоспоримое преймущество, когд аигрок уходит с сервера они автоматически удаляются.
пвары работают медленнее массивов.
Reply
#39

Quote:
Originally Posted by stepmex
Quote:
Originally Posted by MX_Master
Лично я не понимаю, зачем надо было городить PVar'ы, это же не тот опиум для народа, которого ждут игроки и скриптеры. Типа, чтобы был виден прогресс в разработке (: По игре бы возможностей больше а не пиваров пачку. Пивары мона самому плагином добавить в крайнем случае.

Экономия памяти за счет этих пиваров не так уж и критична. Вот GVar уже что-то в плане оптимизации.
в корне не согласен, если ты не нашел для них применение это ещё не значит что они бесполезны. Я вот нашел им применение и не брезгую их использовать. У них есть одно неоспоримое преймущество, когд аигрок уходит с сервера они автоматически удаляются.
Вот тебе написали, что удаляется и ты это повторяешь. Ну и что от этого стало лучше/быстрее? Хе, понравилось про "не брезгаю их использовать" (:

И ты думаешь какие-то функции для динамического хранения переменных нам нужны больше, чем дополнильные игровые возможности? Был бы я С прогером, портировал бы много плагинов в сэмп, просто чтобы люди не мучались со стандартными средствами. Но мультиплеер это не только чистый С++, это еще и игра, управлять которой мы и хотим в большей степени, чем иметь какие-то приблуды по работе с данными.
Reply
#40

Quote:
Originally Posted by ZiGGi
Quote:
Originally Posted by stepmex
в корне не согласен, если ты не нашел для них применение это ещё не значит что они бесполезны. Я вот нашел им применение и не брезгую их использовать. У них есть одно неоспоримое преймущество, когд аигрок уходит с сервера они автоматически удаляются.
пвары работают медленнее массивов.
За то можно использовать как глобальные переменные, связать с FS их
Reply


Forum Jump:


Users browsing this thread: 4 Guest(s)