Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 10 из 10
  1. #1
    Аватар для geneff
    Пользователь

    Статус
    Оффлайн
    Регистрация
    03.07.2017
    Сообщений
    44
    Репутация:
    5 ±

    Как лучше хранить ник игрока?

    Здравствуйте..

    У меня появился вопрос, где же лучше хранить ник игрока? В трехмерном массиве pInfo[MAX_PLAYERS][pName]
    Или создать отдельную переменную PlayerName[MAX_PLAYERS]

    Так как же лучше? -_-

  2. #2
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Эмм, разницы существенной нет. Главное записывай его только при коннекте и дальше уже обращайся к переменной, а не вызывай по новой GetPlayerName
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  3. #3
    Аватар для geneff
    Пользователь

    Статус
    Оффлайн
    Регистрация
    03.07.2017
    Сообщений
    44
    Репутация:
    5 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Эмм, разницы существенной нет. Главное записывай его только при коннекте и дальше уже обращайся к переменной, а не вызывай по новой GetPlayerName
    Так и делаю, спасибо.

  4. #4
    Аватар для Long-
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.11.2016
    Сообщений
    131
    Репутация:
    23 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Эмм, разницы существенной нет. Главное записывай его только при коннекте и дальше уже обращайся к переменной, а не вызывай по новой GetPlayerName
    Ну в первом варианте трехмерный массив, доступ к трехмерному массиву будет сложнее чем ко второму, а уж темболее к первому.
    Где то помню, с VWWV спорили, для ника можно использовать лучше глобальную переменную, юзав обычный одномерный массив.
    Последний раз редактировалось Long-; 15.02.2018 в 14:40.

  5. #5
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Long- Посмотреть сообщение
    Ну в первом варианте двумерный массив, доступ к двумерному массиву будет сложнее.
    Где то помню, с VWWV спорили, для ника можно использовать лучше глобальную переменную, юзав обычный одномерный массив.
    Это из разряда "обращение к нулевой ячейке оптимизированнее (а значит и быстрее), нежели к отдельной переменной". Можешь тогда и от переменных отказаться, начав пользоваться лишь нулевыми ячейками Разница во времени будет, примерно, такая же, как и тут. Так что, как я уже говорил, разницы существенной нет :)
    Мы с тобой уже на эту тему говорили в вк как-то)


    Немного лирики:
    Тут суть ведь не в том, что одна реализация быстрее другой, а в том, насколько разница существенна и может ли более медленный вариант доставить проблем. Специально гнаться за миллисекундами или пытаться сохранить каждый килобайт там, где это вовсе не важно - это пессимизация и этим можно заниматься бесконечно долго, уйдя в какой-нибудь байт-код или создания собственной прошивки для чипа процессора, что стоит на машине, с которой запущен сервер. Всё это, несомненно, может дать прирост к одному из показателей, но стоит ли оно того? :)
    Оптимизацией нужно заниматься либо когда есть конкретная проблема, либо когда иной вариант реализации кода, который будет более действенен, лежит на поверхности. А когда ради временного промежутка, который даже меньше одного такта процессора, тратится куча времени на то, чтоб узнать: "а что же быстрее/выше/сильнее?" - это уже что-то из разряда маразма :)
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  6. #6
    Аватар для Long-
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.11.2016
    Сообщений
    131
    Репутация:
    23 ±
    В какой то теме я видел от тебя сообщения , а-ля: "Пусть даже быстрее на 10 мс, но оно лучше ,почему бы не использовать его? Ведь никаких проигрышей ты не получишься только выгоду.".
    Так почему бы и здесь не придержаться твоему высказыванию ?)
    И автор сказал как лучше, я - ответил, и могу сказать твоими словами :)
    Последний раз редактировалось Long-; 15.02.2018 в 14:52.

  7. #7
    Аватар для geneff
    Пользователь

    Статус
    Оффлайн
    Регистрация
    03.07.2017
    Сообщений
    44
    Репутация:
    5 ±
    Спасибо за ответы!

  8. #8
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Long- Посмотреть сообщение
    В какой то теме я видел от тебя сообщения , а-ля: "Пусть даже быстрее на 10 мс, но оно лучше ,почему бы не использовать его? Ведь никаких проигрышей ты не получишься только выгоду.".
    Так почему бы и здесь не придержаться твоему высказыванию ?)
    И автор сказал как лучше, я - ответил, и могу сказать твоими словами :)
    Во-первых, тут речь идёт не о разнице в 10 мс и даже не об одной миллисекунде, а, вероятнее всего, о отрезке времени, который, как я уже выше писал, будет равен меньше, чем одному тику процессора (замеров не делал, но операции простейшие)


    Во-вторых, как я уже писал, я не настаиваю на том, что нужно делать как я говорю. Я лишь сказал как есть: разница между этими вариантами будет настолько мала, что ей можно пренебречь.
    Если верить замерам в этой теме, при одном миллиарде итераций разница между обращением к обычной переменной и обращением к массиву будет равна 65542 тиков или ~65мс. Делим это значение на 1 миллиард и получаем 0,000000065 мс - именно такова будет разница между одним вызовом массива и одним вызовом переменной. Собственно, в нашем случае значение не должно слишком отличаться от сравнения массива и переменной (просто временные затраты на оба действия станут чуть больше), поэтому... Ну продолжать, думаю, нет смысла


    В-третьих, в предыдущем сообщении всё, что написано после слов "немного лирики", не является попыткой убедить автора или тебя не создавать отдельный массив для хранения ника. Хочется - создавайте. Я лишь пытался сказать, что не стоит тратить своё время на попытки оптимизировать то, что в оптимизации не требуется. Не стоит поддаваться больной теме по поводу оптимизации, что развилась сейчас в сообществе. Реализуйте свои идеи, создавая скрипты, а не гонитесь за цифрами в профайлере. Иначе станете очередными скриптерами, что не создают ничего нового, а лишь топчутся на месте, пытаясь друг друга переплюнуть в ненужной оптимизации.


    UPD: Вообще многим "аптимизаторам" стоит понять, что во всех тестированиях цифры получаются "пугающе большими" лишь потому, что количество последовательных итераций соответствующее. И не забывать делить результат на то количество итераций, которые делал цикл. А то сделают миллион итераций, получат четырёхзначное число и начинают паниковать, забывая про тот самый миллион итераций.
    Последний раз редактировалось DeimoS; 15.02.2018 в 15:36.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  9. #9
    Аватар для pawnoholic
    Пользователь

    Статус
    Оффлайн
    Регистрация
    18.01.2018
    Сообщений
    128
    Репутация:
    15 ±
    Зависит от ситуации, я вот вообще перестал хранить имя игрока в глобальной переменной, когда нужно узнаю его через GetPlayerName и все.

    А если по теме, то храни так как тебе удобнее обращаться к нему, но если хранишь все таки в трехмерном массиве, например как твой, pInfo[MAX_PLAYERS][pName], то не указывай размер ячеек в enum как это делают все, это критическая синтаксическая ошибка, функции по типу, sizeof не сможет вычислить ее размер.

  10. #10
    Аватар для Long-
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.11.2016
    Сообщений
    131
    Репутация:
    23 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Во-первых, тут речь идёт не о разнице в 10 мс и даже не об одной миллисекунде, а, вероятнее всего, о отрезке времени, который, как я уже выше писал, будет равен меньше, чем одному тику процессора (замеров не делал, но операции простейшие)


    Во-вторых, как я уже писал, я не настаиваю на том, что нужно делать как я говорю. Я лишь сказал как есть: разница между этими вариантами будет настолько мала, что ей можно пренебречь.
    Если верить замерам в этой теме, при одном миллиарде итераций разница между обращением к обычной переменной и обращением к массиву будет равна 65542 тиков или ~65мс. Делим это значение на 1 миллиард и получаем 0,000000065 мс - именно такова будет разница между одним вызовом массива и одним вызовом переменной. Собственно, в нашем случае значение не должно слишком отличаться от сравнения массива и переменной (просто временные затраты на оба действия станут чуть больше), поэтому... Ну продолжать, думаю, нет смысла


    В-третьих, в предыдущем сообщении всё, что написано после слов "немного лирики", не является попыткой убедить автора или тебя не создавать отдельный массив для хранения ника. Хочется - создавайте. Я лишь пытался сказать, что не стоит тратить своё время на попытки оптимизировать то, что в оптимизации не требуется. Не стоит поддаваться больной теме по поводу оптимизации, что развилась сейчас в сообществе. Реализуйте свои идеи, создавая скрипты, а не гонитесь за цифрами в профайлере. Иначе станете очередными скриптерами, что не создают ничего нового, а лишь топчутся на месте, пытаясь друг друга переплюнуть в ненужной оптимизации.


    UPD: Вообще многим "аптимизаторам" стоит понять, что во всех тестированиях цифры получаются "пугающе большими" лишь потому, что количество последовательных итераций соответствующее. И не забывать делить результат на то количество итераций, которые делал цикл. А то сделают миллион итераций, получат четырёхзначное число и начинают паниковать, забывая про тот самый миллион итераций.
    Очень много букф, читать муторно, но да ладно это уже мои прихоти.
    А так я тоже никого ничего не заставлял делать, я лишь сказал что лучше использовать отдельный глобальный массив под ники , ибо лучше? хоть на 0,0000000000001 но лучше, верно ? Верно.
    Закроем тему, и не будем к ней возвращаться, я сказал то что нужно :)

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •