Что лучше использовать для оптимизации
|
|
Интернет | Дата: Среда, 28 Октября 2015, 18:08 | Сообщение # 1 |
постоянный участник
Сейчас нет на сайте
| Например f[0]=12 f[1]=13 f[2]=18 f[3]=1,21 и тд или же (переменные) f0=12 f1=13 f2=18 f3=1,21 Массив вроде читается как переменная с разными индексами, и должен оптимизировать игру (заменяя собой несколько переменных)?
Сообщение отредактировал Интернет - Среда, 28 Октября 2015, 18:10 |
|
| |
Леонид | Дата: Среда, 28 Октября 2015, 18:29 | Сообщение # 2 |
постоянный участник
Сейчас нет на сайте
| Не знаю, что из этого быстрее, но разница (если она вообще есть) ничтожна. Массивы не для оптимизации нужны, они по применению отличаются от обычных переменных. Записывать массив отдельными переменными, как показал выше ты, бессмысленно (зачем тогда вообще создавать массив, а не набор переменных?).
|
|
| |
USeR14 | Дата: Четверг, 29 Октября 2015, 00:04 | Сообщение # 3 |
RUSOriginal Studio
Сейчас нет на сайте
| Тут даже дело не в том, что быстрее будет, а для чего и как с этим придется работать. Важно понимать, зачем использовать в игре одномерный массив f[0] ("переменную с ячейками"), если его можно заменить обычной переменной. Если конечно переменных не будет достаточно много - тогда легче массив. Массив удобнее перебирать в цикле и присваивать значения, но в то же время нужно следить, чтобы внутри него не было пустых значений (иначе ошибка).
Тут еще в справке пишут, что
Цитата Неинициализированные ячейки ничего не занимают в памяти, даже если массив огромного размера. Одномерный массив на 40% медленнее, чем обычные переменные.
|
|
| |
Интернет | Дата: Пятница, 30 Октября 2015, 13:05 | Сообщение # 4 |
постоянный участник
Сейчас нет на сайте
| и ещё много (8-9) циклов for в Step сильно загружают пк?
|
|
| |
Леонид | Дата: Пятница, 30 Октября 2015, 14:00 | Сообщение # 5 |
постоянный участник
Сейчас нет на сайте
| Цитата Интернет ( ) и ещё много (8-9) циклов for в Step сильно загружают пк? Это напрямую зависит от того, сколько "шагов" в них. Можно поинтересоваться, зачем ты их используешь столько в step'е?
Сообщение отредактировал Леонид - Пятница, 30 Октября 2015, 14:00 |
|
| |
Интернет | Дата: Пятница, 30 Октября 2015, 14:13 | Сообщение # 6 |
постоянный участник
Сейчас нет на сайте
| Цитата Леонид ( ) Это напрямую зависит от того, сколько "шагов" в них. Можно поинтересоваться, зачем ты их используешь столько в step'е?
Мне нужно проверять есть ли оружие в инвентаре (выбросил оружие стрелять не можешь, а оружия прилично получается) приходится каждое проверять циклом, если сделать всё одним циклом то работать не будет как нужно.
|
|
| |
Xakep | Дата: Пятница, 30 Октября 2015, 14:15 | Сообщение # 7 |
めちゃくちゃちゃ
Сейчас нет на сайте
| Скорость абсолютно одинакова, ты обращаешься по адресу в памяти, что к переменной что к массиву, только когда ты пишешь a[2] к примеру, адрес смещается на 2, для массива за ранее выделяется память где все эти переменные будут храниться, вот если у тебя динамически выделяется память, то тут на выделение памяти будет тратиться время, если за ранее знаешь сколько памяти нужно, то только один раз выделяешь в стековой памяти (она намного быстрее чем куча к примеру, в которой идет динамическое выделение памяти)
|
|
| |
Леонид | Дата: Пятница, 30 Октября 2015, 14:28 | Сообщение # 8 |
постоянный участник
Сейчас нет на сайте
| Цитата Интернет ( ) Мне нужно проверять есть ли оружие в инвентаре (выбросил оружие стрелять не можешь, а оружия прилично получается) приходится каждое проверять циклом, если сделать всё одним циклом то работать не будет как нужно. Если у тебя один for и в нем 8 шагов, то не нагружает. Если у тебя 8 отдельных for, тогда у меня другой вопрос: зачем они?
|
|
| |
EfimovMax | Дата: Пятница, 30 Октября 2015, 15:31 | Сообщение # 9 |
заслуженный участник
Сейчас нет на сайте
| Цитата Интернет ( ) Мне нужно проверять есть ли оружие в инвентаре (выбросил оружие стрелять не можешь, а оружия прилично получается) приходится каждое проверять циклом, если сделать всё одним циклом то работать не будет как нужно. Нет, ну это верх оптимизации)) Заведи 1 переменную типа WeaponOnHero=true/false И в событии атаки проверяй её. Если True - игрок может стрелять, если false - не может. А уже в теле этой проверки проверяй, какое оружие на игроке и чем он должен стрелять
Текущий проект: The Experiment ☭
Выпущенные проекты Steam: Princess.Loot.Pixel.Again Princess.Loot.Pixel.Again x2 Dungetris
|
|
| |
Интернет | Дата: Пятница, 30 Октября 2015, 17:35 | Сообщение # 10 |
постоянный участник
Сейчас нет на сайте
| Ну вот есть в инвентаре: оружие1 оружие2, и тд. Проверяем если есть в инвентаре оружие1 (запускаю for для поиска имени этого предмета в любой ячейки) если находим то переменная (например or[0]) =true если нет то false. И дальше при нажатии на эту ячейку идёт проверка и если or[0]=true то можем стрелять , и. тд с каждым оружием изменяем or[1],or[2] и естественно разные характеристики. Сделал немного не так, но смысл такой Как то ещё?
Сообщение отредактировал Интернет - Пятница, 30 Октября 2015, 17:37 |
|
| |
EfimovMax | Дата: Пятница, 30 Октября 2015, 18:11 | Сообщение # 11 |
заслуженный участник
Сейчас нет на сайте
| Цитата Интернет ( ) Ну вот есть в инвентаре: оружие1 оружие2, и тд. Проверяем если есть в инвентаре оружие1 (запускаю for для поиска имени этого предмета в любой ячейки) если находим то переменная (например or[0]) =true если нет то false. И дальше при нажатии на эту ячейку идёт проверка и если or[0]=true то можем стрелять , и. тд с каждым оружием изменяем or[1],or[2] и естественно разные характеристики. Сделал немного не так, но смысл такой Как то ещё? Жесть какая. Зачем тебе проверять всё доступное оружие? Раз так, то проверяй что находится в конкретной ячейке, то есть перебирай не оружие а ячейки инвентаря.
Текущий проект: The Experiment ☭
Выпущенные проекты Steam: Princess.Loot.Pixel.Again Princess.Loot.Pixel.Again x2 Dungetris
|
|
| |
Интернет | Дата: Пятница, 30 Октября 2015, 18:17 | Сообщение # 12 |
постоянный участник
Сейчас нет на сайте
| А как например из такого цикла ini_x=8 ini_y=2 for(ix=0;ix<ini_x;ix+=1) for(iy=0;iy<ini_y;iy+=1) Выбрать несколько или одну нужную ячейку?
|
|
| |
EfimovMax | Дата: Пятница, 30 Октября 2015, 19:22 | Сообщение # 13 |
заслуженный участник
Сейчас нет на сайте
| Цитата Интернет ( ) А как например из такого цикла Я не понимаю, что это У тебя инвентарь разбит на x и y? Почему не просто одномерный массив?
Текущий проект: The Experiment ☭
Выпущенные проекты Steam: Princess.Loot.Pixel.Again Princess.Loot.Pixel.Again x2 Dungetris
|
|
| |