06:53
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Модератор форума: Dima-kun  
Форум SAMP о мультиплеерах для GTA. »   » Wiki-Samp-Rus » [ Lesson ] Операторы в PAWN.
[ Lesson ] Операторы в PAWN.
Ghost-XДата: Вторник, 07.02.2012, 11:45 | Сообщение # 16
Мастер джэдай
Группа: Продвинутые
Сообщений: 3548
Награды: 36
Город: Наб. Челны
Репутация: 856
Замечания: 40%
Статус:
Quote (Rockman)
Речь идет об оперативной памяти. Скажем, у вас на сервере 2048 мб ОЗУ, она не увеличивается с каждым днем, то время, которое будешь тратить на экономию памяти таким образом, разумнее потратить на оптимизацию кода. Динамически выделять память под массивы, использовать подобие кэша и т.д Уменьшение расхода ОЗУ будет заметнее.

Ну это касаемо лишь игровых серверов. В действительности же, никого не волнует это.



Спор на форуме, все равно что олимпиада среди умственно отсталых: даже если ты победил, ты все равно гермофродит.
Хочешь остаться при своем мнении - держи его при себе.
RockmanДата: Вторник, 07.02.2012, 12:04 | Сообщение # 17
Постоялец
Группа: Продвинутые
Сообщений: 428
Награды: 4
Город: Нижний Новгород
Репутация: 474
Замечания: 0%
Статус:
Quote (Ghost-X)
Ну это касаемо лишь игровых серверов. В действительности же, никого не волнует это.


По-моему быстродействие программ интересует всех. Игровой сервер как пример.

LatronДата: Вторник, 07.02.2012, 13:11 | Сообщение # 18
Группа: I'm V.I.P.
Сообщений: 2115
Награды: 22
Город: Орел
Репутация: 1604
Замечания: 0%
Статус:
Quote (Rockman)
По-моему быстродействие программ интересует всех. Игровой сервер как пример.

конечно ты прав)))



Моё портфолио

Мои работы:
[ Lesson ] Операторы в PAWN.
[ Lesson ] Переменная.
[ GM ] RegSys. ( Last update: 21.04.2012 )


Ghost-XДата: Вторник, 07.02.2012, 13:23 | Сообщение # 19
Мастер джэдай
Группа: Продвинутые
Сообщений: 3548
Награды: 36
Город: Наб. Челны
Репутация: 856
Замечания: 40%
Статус:
Rockman, за 19 лет так и не научились выделять основную мысль
Quote (Ghost-X)
Ну это касаемо лишь игровых серверов. В действительности же, никого не волнует это.

В остальном - сейчас никого не волнует экономия памяти, поскольку память растет довольно быстро.
У меня у самого отец программист, так он мне сказал такую вещь: Это раньше, память экономили, жесточайшие оптимизации, поскольку памяти было порядка 15-20 кбайт.
Когда он начинал работать, им ставили память 4 мегабайта, хотя им было достаточно лишь одного.

Добавлено (07.02.2012, 13:23)
---------------------------------------------
Еще добавлю - сказывается тот фактор, что программы пишутся не с целью экономии памяти, а с целью выпустить первыми.


Спор на форуме, все равно что олимпиада среди умственно отсталых: даже если ты победил, ты все равно гермофродит.
Хочешь остаться при своем мнении - держи его при себе.


Сообщение отредактировал Ghost-X - Вторник, 07.02.2012, 13:19
RockmanДата: Вторник, 07.02.2012, 16:14 | Сообщение # 20
Постоялец
Группа: Продвинутые
Сообщений: 428
Награды: 4
Город: Нижний Новгород
Репутация: 474
Замечания: 0%
Статус:
Quote (Ghost-X)
Rockman, за 19 лет так и не научились выделять основную мысль


Здесь не может быть другой основной мысли.
Если программист говорит: "А зачем мне оптимизация ? Сейчас оперативы у всех гигабайты. Пусть это их заботит", я думаю это плохой программист.

Добавлено (07.02.2012, 16:14)
---------------------------------------------
Вы хотите сказать, что экономия ОЗУ волнует только программистов игровых серверов ?

Ghost-XДата: Вторник, 07.02.2012, 17:11 | Сообщение # 21
Мастер джэдай
Группа: Продвинутые
Сообщений: 3548
Награды: 36
Город: Наб. Челны
Репутация: 856
Замечания: 40%
Статус:
Quote (Rockman)
я думаю это плохой программист.

ты думаешь прежде всего как скриптер игрового сервера, а не как программист)
Говорю как есть. Выпустить первым - вот приоритет. А что касаемо памяти, это уже другая задача.



Спор на форуме, все равно что олимпиада среди умственно отсталых: даже если ты победил, ты все равно гермофродит.
Хочешь остаться при своем мнении - держи его при себе.
EakwarpДата: Вторник, 07.02.2012, 17:27 | Сообщение # 22
Мастер джэдай
Группа: Продвинутые
Сообщений: 4874
Награды: 179
Город: Москва
Репутация: 2543
Замечания: 60%
Статус:
Ghost-X, никто не мешает писать код для софта "в процессе", таким образом, что бы он потреблял умеренное количество памяти. А если программист об этом не заботится, и сразу, первым делом втюхивает в код буфер на 300 метров, извините, это хреновый программист, и странно, что он вообще получил образование.


More than 4 years of development, more than 250,000 lines of source code, more than a hundred units and more than 3400 revisions. Valakas Roleplay - choose your role.


Valakas Roleplay on Twitter

Платные консультации, разработка, в ICQ. Дорого.
Ghost-XДата: Вторник, 07.02.2012, 17:43 | Сообщение # 23
Мастер джэдай
Группа: Продвинутые
Сообщений: 3548
Награды: 36
Город: Наб. Челны
Репутация: 856
Замечания: 40%
Статус:
Eakwarp, понятное дело, что преднамеренно не будет употреблять немеренное количество памяти. Больше экономии памяти мы получаем лишь при доп.оптимизации, когда просчитываем все до мелочей. Вот этот этап порой пропускают.


Спор на форуме, все равно что олимпиада среди умственно отсталых: даже если ты победил, ты все равно гермофродит.
Хочешь остаться при своем мнении - держи его при себе.
toneysixДата: Вторник, 07.02.2012, 18:32 | Сообщение # 24
Джэдай
Группа: I'm V.I.P.
Сообщений: 1731
Награды: 77
Город: Салават
Репутация: 1825
Замечания: 0%
Статус:
Quote
Помогали быстро проверять необходимые условия. А так же использовал битовый сдвиг влево, что бы ускорить умножение на 2 и вправо, что бы ускорить деление на 2

Откуда вы это берете? Сдвиг влево и сдвиг вправо на единицу не делает умножение/деление быстрее. Эту гипотезу я разрушил банально сравнив скорость выполнения операций на компиляторе gnu gcc, и результат оказался противоположным. Обычное деление и умножение на 15 миллисекунд быстрее, чем с побитовыми операторами сдвига на 100000000 итераций.
К тому же, в рациональном коде, многие программисты отступают от правил того или иного компилятора, предпочитая для рутинного кода использовать свои прямолинейные обращения к данным по-средству введения ассемблерного кода, что повышает производительность в данных секторах.
Касаемо рационального использования памяти, то опять-таки говоря о гибкости языка С/C++, дилемм не возникает. Все возможности для создания динамической структуры - есть, вопрос лишь в правильной обработке этих динамических данных, и опять же есть масса готовых инструментарий для динамической работы с данными (vector, lists, bitset, map и прочее).

В павн всегда не хватало гибкости в работе с данными в виду его не распространенности и без перспективности, но этого вполне достаточно для написания динамических, хотя и ограниченных систем.

Если же говорить о побитовых операторах, то я бы далеко не отбрасывал их на задний план. В рациональном программировании они встречаются довольно-таки часто. И суть их использования заключается в оптимизации. Яркий пример использования побитовых операторов состоит в том, чтобы передать в один аргумент несколько флагов и затем интерпретировать их соответствующим образом (OnPlayerKeyStateChange). Также побитовые операторы применяются для преобразования цвета в тот или иной формат при этом без потери самого цвета, изменение яркости, насыщенности, прозрачности и многие другое.



Русскоязычныи портал о MTA/GTA-IV-MP | http://multi-theft-auto.ru
RockmanДата: Вторник, 07.02.2012, 20:37 | Сообщение # 25
Постоялец
Группа: Продвинутые
Сообщений: 428
Награды: 4
Город: Нижний Новгород
Репутация: 474
Замечания: 0%
Статус:
Quote (Ghost-X)
ты думаешь прежде всего как скриптер игрового сервера, а не как программист)


Абсолютно не согласен, скриптингом на pawn намного реже занимаюсь. И меня часто заботит оптимизация кода, для увеличения быстродействия.

Добавлено (07.02.2012, 20:37)
---------------------------------------------
Quote (toneysix)
Откуда вы это берете? Сдвиг влево и сдвиг вправо на единицу не делает умножение/деление быстрее. Эту гипотезу я разрушил банально сравнив скорость выполнения операций на компиляторе gnu gcc, и результат оказался противоположным. Обычное деление и умножение на 15 миллисекунд быстрее, чем с побитовыми операторами сдвига на 100000000 итераций.
К тому же, в рациональном коде, многие программисты отступают от правил того или иного компилятора, предпочитая для рутинного кода использовать свои прямолинейные обращения к данным по-средству введения ассемблерного кода, что повышает производительность в данных секторах.
Касаемо рационального использования памяти, то опять-таки говоря о гибкости языка С/C++, дилемм не возникает. Все возможности для создания динамической структуры - есть, вопрос лишь в правильной обработке этих динамических данных, и опять же есть масса готовых инструментарий для динамической работы с данными (vector, lists, bitset, map и прочее).

В павн всегда не хватало гибкости в работе с данными в виду его не распространенности и без перспективности, но этого вполне достаточно для написания динамических, хотя и ограниченных систем.


Бывают случаи когда битовые сдвиги в разы быстрее обычного умножения, видел где то подробную статистику зависимости от типа переменных, от процессора и различных ситуаций, примерно в 50% сдвиги быстрее.

Quote (toneysix)
Если же говорить о побитовых операторах, то я бы далеко не отбрасывал их на задний план. В рациональном программировании они встречаются довольно-таки часто. И суть их использования заключается в оптимизации. Яркий пример использования побитовых операторов состоит в том, чтобы передать в один аргумент несколько флагов и затем интерпретировать их соответствующим образом (OnPlayerKeyStateChange). Также побитовые операторы применяются для преобразования цвета в тот или иной формат при этом без потери самого цвета, изменение яркости, насыщенности, прозрачности и многие другое.


Если говорить о pawn и о большинстве юзеров данного проекта, то ставить логические операторы в одном уроке с побитовыми не очень рационально. Большинство, я уверен, ничего не поняли о битовых операторах вообще.



Сообщение отредактировал Rockman - Вторник, 07.02.2012, 20:38
toneysixДата: Вторник, 07.02.2012, 21:12 | Сообщение # 26
Джэдай
Группа: I'm V.I.P.
Сообщений: 1731
Награды: 77
Город: Салават
Репутация: 1825
Замечания: 0%
Статус:
Quote
Бывают случаи когда битовые сдвиги в разы быстрее обычного умножения, видел где то подробную статистику зависимости от типа переменных, от процессора и различных ситуаций, примерно в 50% сдвиги быстрее.

Что значит "бывают"?
Quote
что бы ускорить умножение на 2 и вправо, что бы ускорить деление на 2

Я имею прямо противоположные результаты, которых я исследовал собственноручно. Поэтому не убедительно. Какие тут могут быть случаи - непонятно.
Quote
Если говорить о pawn и о большинстве юзеров данного проекта, то ставить логические операторы в одном уроке с побитовыми не очень рационально. Большинство, я уверен, ничего не поняли о битовых операторах вообще.

Эм, как можно сопоставлять рациональность к тождеству? xD
Не знают - так узнают, не нужно ориентироваться на тех, кто этим профессионально не занимается.
Да и потом, это не имеет никакого значения, от того, что в уроке присутствуют вполне уместно побитовые операторы - ни жарко, ни холодно никому не становится.



Русскоязычныи портал о MTA/GTA-IV-MP | http://multi-theft-auto.ru
RockmanДата: Вторник, 07.02.2012, 21:20 | Сообщение # 27
Постоялец
Группа: Продвинутые
Сообщений: 428
Награды: 4
Город: Нижний Новгород
Репутация: 474
Замечания: 0%
Статус:
toneysix, я же описал, что это может зависеть от типа переменных, от конструкций в которых операции используются, от процессора и от многих других факторов. Не думаю, что в своих собственноручных исследованиях, вы использовали отличные от gcc компиляторы, различные ОС, процессоры и экспериментировали с типами.

Добавлено (07.02.2012, 21:20)
---------------------------------------------
Так же есть разница в результатах при Debug и Release компиляциях.


Сообщение отредактировал Rockman - Вторник, 07.02.2012, 21:18
toneysixДата: Вторник, 07.02.2012, 21:33 | Сообщение # 28
Джэдай
Группа: I'm V.I.P.
Сообщений: 1731
Награды: 77
Город: Салават
Репутация: 1825
Замечания: 0%
Статус:
Quote
toneysix, я же описал, что это может зависеть от типа переменных, от конструкций в которых операции используются, от процессора и от многих других факторов. Не думаю, что в своих собственноручных исследованиях, вы использовали отличные от gcc компиляторы, различные ОС, процессоры и экспериментировали с типами.

Ваше описание выглядит не убедительно. Я проверял с типом INT, с разными знчениями, от больших, до маленьких, результат остается прежним. В среднем на 15 миллисекунд сдвиги вправо и влево на один проигрывают стандартным умножением и делением. Выбирайте правильный компилятор, все, что могу сказать я.
Но, прочтите ещё раз ваш утвердительный тезис, который кроется в смысле вашего применения:
Quote
А так же использовал битовый сдвиг влево, что бы ускорить умножение на 2 и вправо, что бы ускорить деление на 2

Здесь ни слова о каких-то условиях. Я бы не говорил ничего, если бы уже не встречался с такими людьми, которые прочитав что-то, где-то, мыслят подобным образом. Поэтому мое убеждение для меня остается некой презумпцией, пока я не вижу действительно убеждающие в обратном данные. Приведите мне код, в котором деление на 2 будет быстрее стандартного способа, только потом будем о чем-то говорить. А если говорить о таких факторах, как влияние процессора, общей загруженности, значений, то пропадает истинный смысл использования данного способа в силу его не универсальности, ибо у одного будет быстрее, у другого медленнее - неоднозначность в программировании не ценится.



Русскоязычныи портал о MTA/GTA-IV-MP | http://multi-theft-auto.ru

Сообщение отредактировал toneysix - Вторник, 07.02.2012, 21:34
RockmanДата: Вторник, 07.02.2012, 22:27 | Сообщение # 29
Постоялец
Группа: Продвинутые
Сообщений: 428
Награды: 4
Город: Нижний Новгород
Репутация: 474
Замечания: 0%
Статус:
Взял большие числа, что бы результаты были поточнее.
Проводим операцию с числом 10000 по три раза
В цикле 64000000 итераций

Результаты *:
404143
391225
395167


Результаты <<:
386184
387606
385979



Сообщение отредактировал Rockman - Вторник, 07.02.2012, 22:29
toneysixДата: Вторник, 07.02.2012, 22:40 | Сообщение # 30
Джэдай
Группа: I'm V.I.P.
Сообщений: 1731
Награды: 77
Город: Салават
Репутация: 1825
Замечания: 0%
Статус:
Rockman Опять-таки, это частный случай, даже те, 15 миллисекунд это погрешность, не более того, на самом деле их можно приравнять. Мне нужен конкретно общий случай, который бы всегда позволял получать удовлетворяющий вариант.
P.S: Вот мой код:
http://best.of.by/paste/d155b2c2b
Результаты:
standart int: 3666
not standart int: 3760


standart int: 3697
not standart int: 3744


standart int: 3651
not standart int: 3678


gnu gcc



Русскоязычныи портал о MTA/GTA-IV-MP | http://multi-theft-auto.ru

Сообщение отредактировал toneysix - Вторник, 07.02.2012, 22:49
Форум SAMP о мультиплеерах для GTA. »   » Wiki-Samp-Rus » [ Lesson ] Операторы в PAWN.
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua