Всем привет. Я бы хотел обсудить с вами тему оптимизирования кода и мистической всеубивающей нагрузки, которой все так бояться.
Хочу заметить сразу. Я не считаю себя профессионалом pawn. Есть много людей, которые знают о pawn в разы больше меня. Так что всё, что я буду писать ниже, будет являться моим скромным мнением.
Первая тема:
Как и большинство скриптеров, я частенько почитываю форумы, ища для себя какую-то интересную информацию. И я очень часто стал замечать сообщения, типа "Не используй то-то, ибо это нагрузка на сервер!". Меня довольно сильно стал напрягать этот вопрос, ибо часто люди обращаются ко мне в скайп за помощью и периодически я слышу "...но это же нагрузка на сервер!...". И самое главное то, что такие люди, по незнанию, ограничивают себя во многом, боясь мистической нагрузки. По моему, времена, когда нужно было бояться любой лишней нагрузки и когда надо было считать каждый килобайт использованной памяти, давно прошли и сейчас компьютеры способны на гораздо большее, чем "обновление текстдрава каждую секунду". Лично мне ещё ни разу не удавалось положить свой сервер мистической нагрузкой. Кривым кодом - да. Но вот нагрузкой ни разу. И мне хочется плакать от смеха, когда читаешь в темах что-то типа: "Не используйте паблик OnPlayerUpdate!!!! Нельзя!!! Нагрузка, ололо!!!!". Я бы лично оторвал людям, которые пишут подобные сообщения, руки и засунул их в одно место...
Я лишь хочу сказать то, что, по моему, нужно бояться не нагрузки, а кривого кода. Ибо если код построен правильно, вся нагрузка будет незаметна (выделил память - использовал - отчистил. И не нужно бояться нагрузки). Именно кривой код кладёт сервера (код, создающий рекурсию, например), а не нагрузка от обновления чего-либо.
Если я не прав, хотелось бы услышать аргументированный ответ =)
Вторая тема:
Так же очень часто стал замечать мега-уроки, в которых люди помогают оптимизировать код. Нет, против оптимизации я ничего не имею и даже поддерживаю эту тему (часто именно по теме оптимизации ищу новую информацию). Я против того, что пишут в этих самых уроках. А пишут там частенько подобное:
"Добрый день. Бла-бла-бла. Сегодня я вам покажу как оптимизировать "бла-бла". Это очень просто. Берёте "бла" и заменяете на мою функцию - "алб". Всё. И помните, использовать "бла-бла" плохо! Это очень нагружает мод! Мой способ ускоряет функцию на целых пару миллисекунд!"
Примерно так. То есть, часто читаешь уроки и понимаешь, что автор пытается сказать "Использовать стандартные функции - плохо". Примерно такая тема была про PVar. Какой-то парень утверждал, что если использовать обычные массивы new, а не PVar, значит можно быть уверенным, что твой мод будет лагать и т.д. Я, если честно, не очень помню всего того, что он писал. Но писал он полную ересь. И таких людей очень много. Я называю их жертвами оптимизации. Именно от таких людей я слышал не раз "Используешь старую функцию, а не новую? Нуб!" (Один парень задал вопрос на форуме и я ему написал готовый код с использованием if/else, а не switch/case. И тут же прибежал какой-то парень, крича то, что я нуб и надо использовать switch/case, ведь нагрузки меньше!!!!). В общем, я хочу сказать, что очень глупо бегать за миллисекундами. Ни один игрок не оценит вашего старания. Да и вы сами не увидите никакой разницы. И если вы не можете разобраться в каком-то новомодном способе, ускоряющем работу кода на целые ПАРУ МИЛЛИСЕКУНД, просто пользуйтесь старым, проверенным способом. Помните, что раньше не было никаких "switch/case", "pVar" и прочего, но сервера спокойно работали, держа в паблике OnPlayerUpdate целые системы, которые не заставляли лагать сервер. Просто стройте свой код логически и тогда всё будет хорошо. Повторюсь, сервера падают не от нагрузки, а исключительно от кривого кода.
Я бы хотел услышать ваше мнение по этому поводу. Писал тему на ходу + уставший, поэтому мысли могут быть немного не связаны между собой Только прошу аргументировать свои ответы =)
**********************************************************************************************************
P.s. Выложил сюда т.к. когда то он мне этой темой очень помог, а сейчас наш раздел "Вопросы" забит вопросами о оптимизации. И думаю эта тема не будет лишней.
Текст писал: DeIMoS
Скопировал и вставил сюда: underwoker
Над сценарием работал: DeIMoS
Дата выкладывания на Г-И: 16.06.2013, 16:43(Годовщина блин)