powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / операция индексирования массива (доступа к элементу)
10 сообщений из 10, страница 1 из 1
операция индексирования массива (доступа к элементу)
    #38297877
ayvango
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как выяснилось, взятие элемента массива тоже увеличивает время работы программы, причём чем большей размерности массив -- тем дольше работает программа.
Например, судя по опыту, a[10][10] мы получаем медленнее, чем b[100]. Очевидный путь -- перейти к одномерным массивам вместо 2-мерных. А есть ли какие-то более хитрые способы для того, чтобы извлечение элементов из массива занимало не так много времени? И сильно ли зависит от языка программирования?
...
Рейтинг: 0 / 0
операция индексирования массива (доступа к элементу)
    #38297884
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ayvangoсудя по опыту, a[10][10] мы получаем медленнее, чем b[100]. Очевидный путь -- перейти к одномерным массивам вместо 2-мерных.
Бред. Добавь к получению элемента линеаризованного массива вычисление линеаризованного индекса из набора многомерных индексов - и твой профит испарится. Даже скорее оверхед будет.
...
Рейтинг: 0 / 0
операция индексирования массива (доступа к элементу)
    #38297945
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ayvangoИ сильно ли зависит от языка программирования?
зависит. В фортране легко накладываются друг на друга массивы различной размерности.
AkinaБред. Добавь к получению элемента линеаризованного массива вычисление линеаризованного индекса из набора многомерных индексов - и твой профит испарится. Даже скорее оверхед будет.
если нужно произвести операцию над всеми элементами многомерного массива - выйгрыш будет.
...
Рейтинг: 0 / 0
операция индексирования массива (доступа к элементу)
    #38298013
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ayvangoКак выяснилось, взятие элемента массива тоже увеличивает время работы программы, причём чем большей размерности массив -- тем дольше работает программа.
Например, судя по опыту, a[10][10] мы получаем медленнее, чем b[100]. Очевидный путь -- перейти к одномерным массивам вместо 2-мерных. А есть ли какие-то более хитрые способы для того, чтобы извлечение элементов из массива занимало не так много времени? И сильно ли зависит от языка программирования?
Есть один железный способ. Уйти от операций индексатора к указателям. И обычно
если работаешь итеративно с матрицей или гиперкубом то обходя ее последовательно
в порядке колонок и строк ты получаешь просто инкремент указателя.

Код: plaintext
1.
a[10][10],a[10][11]... трансформится в ptr = &a[10][10]; ptr++, ptr++ e.t.c.
...
Рейтинг: 0 / 0
операция индексирования массива (доступа к элементу)
    #38298052
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonayvangoКак выяснилось, взятие элемента массива тоже увеличивает время работы программы, причём чем большей размерности массив -- тем дольше работает программа.
Например, судя по опыту, a[10][10] мы получаем медленнее, чем b[100]. Очевидный путь -- перейти к одномерным массивам вместо 2-мерных. А есть ли какие-то более хитрые способы для того, чтобы извлечение элементов из массива занимало не так много времени? И сильно ли зависит от языка программирования?
Есть один железный способ. Уйти от операций индексатора к указателям. И обычно
если работаешь итеративно с матрицей или гиперкубом то обходя ее последовательно
в порядке колонок и строк ты получаешь просто инкремент указателя.

Код: plaintext
1.
a[10][10],a[10][11]... трансформится в ptr = &a[10][10]; ptr++, ptr++ e.t.c.

насколько я знаю, если, к примеру, в с++ массив был создан динамически
Код: plaintext
1.
2.
3.
int **a = new int*[10];
for (int i ...)
    a[i] = new int[10]


то перейти, допустим, от a[5][9] к a[6][0] простым инкрементом скорее всего не получится (если только две строки не оказались друг за другом).
...
Рейтинг: 0 / 0
операция индексирования массива (доступа к элементу)
    #38298053
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилесли нужно произвести операцию над всеми элементами многомерного массива - выйгрыш будет.А это смотря какая операция. Если она использует многомерные индексы - опять-таки будет оверхед.
...
Рейтинг: 0 / 0
операция индексирования массива (доступа к элементу)
    #38298109
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный Мечmaytonпропущено...

Есть один железный способ. Уйти от операций индексатора к указателям. И обычно
если работаешь итеративно с матрицей или гиперкубом то обходя ее последовательно
в порядке колонок и строк ты получаешь просто инкремент указателя.

Код: plaintext
1.
a[10][10],a[10][11]... трансформится в ptr = &a[10][10]; ptr++, ptr++ e.t.c.

насколько я знаю, если, к примеру, в с++ массив был создан динамически
Код: plaintext
1.
2.
3.
int **a = new int*[10];
for (int i ...)
    a[i] = new int[10]


то перейти, допустим, от a[5][9] к a[6][0] простым инкрементом скорее всего не получится (если только две строки не оказались друг за другом).
Да. Создавать надо 1-мерный вектор. Но работать с ним как гиперкубиком.
...
Рейтинг: 0 / 0
операция индексирования массива (доступа к элементу)
    #38298329
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonСоздавать надо 1-мерный вектор. Но работать с ним как гиперкубиком.Это сразу мне напомнило, что когда-то я изучал Форт...
...
Рейтинг: 0 / 0
операция индексирования массива (доступа к элементу)
    #38298440
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM,

а не фортран EQUIVALENCE ?
...
Рейтинг: 0 / 0
операция индексирования массива (доступа к элементу)
    #38298492
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилне фортран EQUIVALENCE ?Не-а. Вот это и это ...
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / операция индексирования массива (доступа к элементу)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]