Среда, 18 Декабря 2024, 08:56

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Какой массив будет более оптимизированный?
ИнтернетДата: Понедельник, 31 Июля 2017, 21:15 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
Код

for(i=0;i<192;i+=32)
{
mass[i]=0
}

или
Код

for(i=0;i<6;i++)
{
var; ix=i*32
mass[ix]=0
}


Сообщение отредактировал Интернет - Понедельник, 31 Июля 2017, 21:16
VuvkДата: Понедельник, 31 Июля 2017, 21:34 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
а в чем соль? Каждый 32-й элемент обнуляется, а промежуточные 31 что делают?
ИнтернетДата: Понедельник, 31 Июля 2017, 21:39 | Сообщение # 3
постоянный участник
Сейчас нет на сайте
В данном случае значение не играет роли, просто сам факт записи.
Например: у нас есть сетка с шестью ячейками, они все пустые. (между ними расстояние 32 пикселя)
Я так понял в последнем случае получается что то типо mass {0} {0} {0} {0} {0} {0} ?
И он лучше чем 1-ая запись? Если да, то чем.


Сообщение отредактировал Интернет - Понедельник, 31 Июля 2017, 21:42
VuvkДата: Понедельник, 31 Июля 2017, 21:47 | Сообщение # 4
заслуженный участник
Сейчас нет на сайте
Операция умножения медленная, так что первый вариант будет чуть шустрее. Плюс ты во втором варианте в цикле объявляешь переменную в каждой итерации, что тоже плохо.

Добавлено (31 июля 2017, 21:47)
---------------------------------------------
Я чего-то не понимаю? У тебя получится одномерный массив в обоих случаях вида
0_31 элемент мусора_0_31 элемент мусора_0_31 элемент мусора_0_31 элемент мусора_0_31 элемент мусора_0

Сообщение отредактировал Vuvk - Понедельник, 31 Июля 2017, 21:42
ИнтернетДата: Понедельник, 31 Июля 2017, 21:52 | Сообщение # 5
постоянный участник
Сейчас нет на сайте
Что за такой "элемент мусора"?

Сообщение отредактировал Интернет - Понедельник, 31 Июля 2017, 22:01
VuvkДата: Понедельник, 31 Июля 2017, 22:04 | Сообщение # 6
заслуженный участник
Сейчас нет на сайте
Мусор - Неинициализированное значение
ИнтернетДата: Понедельник, 31 Июля 2017, 22:10 | Сообщение # 7
постоянный участник
Сейчас нет на сайте
Так как грамотнее будет записать?
Мне нужен массив "состоящий из 6-ти ячеек"
VuvkДата: Вторник, 01 Августа 2017, 06:01 | Сообщение # 8
заслуженный участник
Сейчас нет на сайте
Тебе нужно 6 ячеек, в котором бы было 32 значения? Так возьми двухмерный массив mass [32, 6] и не пудри мозги! :D Можно запаковать в одномерный, но зачем тебе это?
ASH2Дата: Вторник, 01 Августа 2017, 10:13 | Сообщение # 9
участник
Сейчас нет на сайте
Интернет, я не до конца понял, что ты хочешь получить, но мне кажется или тут как будто какая-то связь с координатами и ячейками в 32 пикселя? Если так - зачем тебе в массиве все значения? Бери просто 6 значений
Код
for(i=0;i<6;i++)
{
mass[i]=0
}

но перед использованием умножай/дели порядковый номер на 32... Или я чего-то не понимаю?


Карсон и Питееерс!!!
VuvkДата: Вторник, 01 Августа 2017, 10:28 | Сообщение # 10
заслуженный участник
Сейчас нет на сайте
Цитата Vuvk ()
Я чего-то не понимаю?

Цитата ASH2 ()
Или я чего-то не понимаю?

Интернет, задача не ясна. Что вообще ты хочешь сделать?


Сообщение отредактировал Vuvk - Вторник, 01 Августа 2017, 10:40
ДанилаСтержневДата: Вторник, 01 Августа 2017, 11:59 | Сообщение # 11
постоянный участник
Сейчас нет на сайте
Интернет отключили

Красочная сюжетно ориентированная игра-головоломка
ИнтернетДата: Вторник, 01 Августа 2017, 13:03 | Сообщение # 12
постоянный участник
Сейчас нет на сайте
Цитата ASH2 ()
но перед использованием умножай/дели порядковый номер на 32... Или я чего-то не понимаю?

Да вот так и делаю. Просто был вопрос, умножать порядковый номер потом, или вызывать цикл сразу со всеми значениями.
Например есть поле 288 пикселей, соответственно 9 ячеек 32/32, каждая ячейка со своими координатами имеет значение 0 либо 1.Но я так понял, что вместо for(i=0;i<288;i+=32) лучше написать for(i=0;i<9;i++), а потом вызывать массив уже mass[i*32].


Сообщение отредактировал Интернет - Вторник, 01 Августа 2017, 13:05
VuvkДата: Вторник, 01 Августа 2017, 13:26 | Сообщение # 13
заслуженный участник
Сейчас нет на сайте
Кто-нибудь объясните мне, что он делает, плез crazy
Цитата
вызывать массив уже mass[i*32]

это работает медленнее, чем mass[32], mass[64] и т.д.
ASH2Дата: Вторник, 01 Августа 2017, 13:55 | Сообщение # 14
участник
Сейчас нет на сайте
Интернет, как я и говорил, вместо этого лучше написать

Код
for(i=0;i<6;i++)
{
    mass[i]=0
}

а уже когда будешь использовать этот массив (я не знаю где, например, будешь от координаты x отстраиваться, которая у тебя по пикселям) будешь уже обращаться к этому массиву как mass[x/32] (только на 0 не дели).


Карсон и Питееерс!!!
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг