Вход

Просмотр полной версии : [Вопрос] Упаковать данные о расположении объектов



KillStreak
05.03.2017, 20:14
Возник вопрос, можно ли упаковать данные объекта и будет ли это как-то благоприятно влиять на мод? Есть ли выгода делать это что бы получить свободные данные или всё же это пустая трата времени?




#include <a_samp>
#include <streamer>

CreateDynamicObject(1111, 1000.39999, 2000.49999, 30.59999, 0.00000, 90.00000, 90.00000);

VVWVV
05.03.2017, 21:46
Странный вопрос, обычно для оптимизации упаковывают строки.

А чего вы хотите добиться, упаковав данные значения?!

KillStreak
06.03.2017, 03:07
Странный вопрос, обычно для оптимизации упаковывают строки.

А чего вы хотите добиться, упаковав данные значения?!

Пока не знаю чего хочу добиться, ведь я не представляю понятия как их упаковать. Я предполагаю наверное какую-то оптимизацию, что конечно маловероятно.

DeimoS
06.03.2017, 10:53
Пока не знаю чего хочу добиться, ведь я не представляю понятия как их упаковать. Я предполагаю наверное какую-то оптимизацию, что конечно маловероятно.

Вместо того, чтоб оптимизировать ещё не написанный код, лучше займись реализацией своих идей.
Оптимизировать будешь когда уже всё будет написано и когда будешь видеть, что твоя реализация привела к лагам.
В этом случае ты будешь видеть действительно проблемный код и сможешь понять как в следующий раз написать этот код так, чтоб он не был проблемным.
А то, чем пытаешься сейчас заниматься ты - дело крайне неблагодарное. И оно тебя ни к чему хорошему не приведёт.
Сейчас и так уже процентов под 80 всех скриптеров SA-MP - мамкины оптимизаторы. А вот тех, кто привносит в SA-MP что-то новое и реализует интересные системы - оставшиеся 20%.
Оптимизировать "на лету" будешь тогда, когда уже научишься на своих ошибках. А пока не трать своё время на попытки оптимизировать то, что и без оптимизации хорошо работает.

Daniel_Cortez
06.03.2017, 10:54
Просто оставлю это здесь:

http://pro-pawn.ru/showthread.php?13706
http://pro-pawn.ru/showthread.php?13962

KillStreak
06.03.2017, 11:11
Вместо того, чтоб оптимизировать ещё не написанный код, лучше займись реализацией своих идей.

Этим я и занимаюсь, у меня свой подход и своё виденье.


Оптимизировать будешь когда уже всё будет написано и когда будешь видеть, что твоя реализация привела к лагам.

У меня есть кое какой код, просто интересно узнать как еще с ним можно поступить.


А то, чем пытаешься сейчас заниматься ты - дело крайне неблагодарное. И оно тебя ни к чему хорошему не приведёт.
Форум посвящён Pawn и на это нацелен, а я новичок который не способен еще грамотно мыслить в этой среде и задаёт вопросы интересующие его которые по его мнению следует ему узнать, ведь как я говорил раньше у меня свой подход и своё виденье на это.


Сейчас и так уже процентов под 80 всех скриптеров SA-MP - мамкины оптимизаторы. А вот тех, кто привносит в SA-MP что-то новое и реализует интересные системы - оставшиеся 20%.

Откуда такие цифры, ты обладаешь глобальное статистикой? Ваш форум не единственный и не всё сообщество обитает тут.


Оптимизировать "на лету" будешь тогда, когда уже научишься на своих ошибках. А пока не трать своё время на попытки оптимизировать то, что и без оптимизации хорошо работает.

Хороший совет, но опять же я пытаюсь выискать то что мне интересно в данный момент.


Просто оставлю это здесь:

http://pro-pawn.ru/showthread.php?13706
http://pro-pawn.ru/showthread.php?13962


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

DeimoS
06.03.2017, 11:23
Этим я и занимаюсь, у меня свой подход и своё виденье.
...
У меня есть кое какой код, просто интересно узнать как еще с ним можно поступить.
...
Форум посвящён Pawn и на это нацелен, а я новичок который не способен еще грамотно мыслить в этой среде и задаёт вопросы интересующие его которые по его мнению следует ему узнать, ведь как я говорил раньше у меня свой подход и своё виденье на это.
...
Хороший совет, но опять же я пытаюсь выискать то что мне интересно в данный момент.

Ну а я просто даю тебе совет по поводу того, что сейчас тебе следовало бы на другие вещи внимание обратить, а не пытаться упаковать аргументы для CreateDynamicObject. Для начала лучше разберись с тем, как вообще сервер работает с памятью, сколько её и стоит ли вообще пытаться что-то упаковывать в текущих реалиях. Ну или продолжай дальше забивать свой мозг ненужной тебе информацией. Как я уже написал ран



Откуда такие цифры, ты обладаешь глобальное статистикой? Ваш форум не единственный и не всё сообщество обитает тут.

Во-первых, я написал, что это примерно.
Во-вторых, я тоже сижу не только на данном форуме и вижу как большинство гонится за псевдооптимизацией, что приводит к тому, что форумы наполнены кучей одинаковых, но "оптимизированных" систем. А когда какой-нибудь скриптер, который особо не парится над оптимизацией, реализует какую-то свою идею, не оптимизируя при этом код до идеала (тот же инвентарь на текстдравах), всё сообщество "аптимизаторов" вдруг разрывает на части от того, что такую "сложную" систему возможно реализовать в SA-MP.
Забивая себе голову оптимизацией того, что и так нормально работает, ты ограничиваешь себя в реализации других идей, как минимум, потому, что тратишь своё время на эту бессмысленную оптимизацию. На дворе 21 век и мощность серверных машин, на которых запускают сервера, давно покрывает с головой все огрехи, позволяя работать даже самому кривому коду (пример - RLS). В наше время можно заставить лагать сервер лишь от поистине кривого кода (бесконечный цикл/рекурсия/использование функций не по назначению или же передача каких-то параметров, которые вызывают баги сампа). Так что советую ещё раз - не забивай голову ерундой. Пройдёт время, ты наберёшься знаний и сам начнёшь понимать как лучше реализовать ту или иную систему. А пока это время не прошло, лучше набирайся знаний, а не стопорись на псевдооптимизации

KillStreak
06.03.2017, 11:33
Во-вторых, я тоже сижу не только на данном форуме и вижу как большинство гонится за псевдооптимизацией, что приводит к тому, что форумы наполнены кучей одинаковых, но "оптимизированных" систем.

Тяжело поспорить.


А когда какой-нибудь скриптер, который особо не парится над оптимизацией, реализует какую-то свою идею, не оптимизируя при этом код до идеала (тот же инвентарь на текстдравах), всё сообщество "аптимизаторов" вдруг разрывает на части от того, что такую "сложную" систему возможно реализовать в SA-MP.

Молодая кровь и жажда соперничества, вот как это называется. Но с тобой я согласен.


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

В основном я занимаюсь маппингом, мне крайне интересно узнать что еще можно с ним сделать. Дело даже не в оптимизации, а в том возможно ли это.


На дворе 21 век и мощность серверных машин, на которых запускают сервера, давно покрывает с головой все огрехи, позволяя работать даже самому кривому коду (пример - RLS). В наше время можно заставить лагать сервер лишь от поистине кривого кода (бесконечный цикл/рекурсия/использование функций не по назначению или же передача каких-то параметров, которые вызывают баги сампа).

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

DeimoS
06.03.2017, 13:54
Безусловно ты прав, но не всегда стоит действовать по этому принципу. Ведь не у всех финансовое положение позволяет работать на мощных или даже близких к хорошей мощности машин. Я видел подобные сервера и сборки паблик модов которые на них стоят, вроде ничего кривого там особо нет и на мощной машине будет работать хорошо но вот на копеечной машине всё висит и работает через раз.

Для того, чтоб даже самый неоптимизированный (не путать с кривым) мод не лагал, достаточно взять машину с минимальными требованиями для запуска SA-MP сервера (хотя там основные требования к интернет-каналу идут, как я знаю) и сейчас нужно постараться, чтоб найти хостинг с таким железом. Обычно все лаги появляются либо из-за кривого кода, либо из-за кривых настроек самого хостинга (особенно когда хостер пытается экономить и урезает всё, что только можно).
В общем, не стоит пытаться заниматься оптимизацией до того момента, пока она реально не потребуется.

А с маппингом ты ничего особо не придумаешь. Всё, что можно с ним сделать, это либо сократить код (повлияет лишь на читаемость и удобствно. И не всегда в лучшую сторону), либо как-то поработать с оформлением кода (нормальные названия переменных и т.п.), либо сэкономить памяти в сегменте данных, что довольно бессмысленно, ибо сэкономишь ты мизерное количество байт, при этом, скорее всего, усложнится дальнейшая работа с кодом.

Daniel_Cortez
06.03.2017, 21:15
Я уже бывал в этих темах, новая информация тяжело воспринимается. Я не хочу что бы за меня всё делали, мне казалось что хоть кто то покажет небольшой пример от которого и можно оттолкнуться.
Ок, тогда перейдём обратно к вашему вопросу про упаковку - под ней обычно имеется в виду избавление от избыточности информации. Взять, например, те же строки, о которых упомянул выше VVWVV: в обычных, неупакованных строках на хранение одного символа отводится 1 ячейка, которая имеет размер в 4 байта, хотя для хранения символа достаточно лишь 1 байта и остальные 3 используются впустую. При упаковке строк в одну ячейку записывается 4 символа, благодаря чему используются все 4 байта ячейки и для хранения строки требуется меньше памяти.

А теперь к вашей задаче: упаковать данные об объекте. Как вы это вообще представляете? Координаты объекта - это вещественные числа, для представления которых используются все 4 байта ячейки. В самом-самом лучшем случае (ИМХО, это из разряда фантастики - сейчас поймёте, почему) можно отсечь вещественную часть и хранить координаты в виде двухбайтовых целых чисел со знаком (от -32768 до 32767 - координаты объектов в SA-MP всё равно ограничены этим диапазоном) так, чтобы в одну ячейку умещалось два числа. Но тогда вам особым образом придётся записывать сами координаты (например, вместо пары "100.00, 200.00" будет что-то похожее на "100 << 16 + 200"), что значительно ухудшит читаемость, да ещё и тратить время на написание алгоритма для "распаковки" таких данных. И это ещё не говоря о том, что с урезанием вещественной части чисел потеряется точность расположения объектов, что критично при создании интерьеров - например, посуда, которая должна стоять на столе начнёт наполовину проваливаться под стол.

Сами как думаете, оно того стоит? -_-

Для сравнения, чтобы упаковать ту же строку, достаточно всего лишь указать знак "!" перед самой записью строки в кавычках или использовать функцию strpack для упаковки во время выполнения. В общем, оптимизация оптимизацией, но здравый смысл ещё никто не отменял.