169 похожих чатов

Я вот не совсем пойму ваше слово двумерный, это массив

указателей на массивы? Или же это одномерный который мы заполняем будто он двумерный?

18 ответов

25 просмотров

Двумерный - значит у тебя массив разделён на строки и столбцы. Одномерный идёт просто последовательно.

Дмитрий-Воронин Автор вопроса
КТ315
Двумерный - значит у тебя массив разделён на строк...

Ну с каким будет легче процессору работать?

Дмитрий Воронин
Ну с каким будет легче процессору работать?

С одномерным, конечно. Но это же разные по назначению массивы. Скажем, у тебя: 1 2 3 4 5 6 7 8 9 1 2 3 И тебе надо первый столбец заполнить - ты вынужден делать 0*4+0, 0*4+1, 0*4+2. Как одномерный массив ты его никак не заполнишь, потому что в памяти он лежит так: 1,2,3,4,5,6,7,8,9,1,2,3

Дмитрий-Воронин Автор вопроса
КТ315
С одномерным, конечно. Но это же разные по назначе...

Ну я знаю что придется прыгать + witdth поэтому и пришёл сюда спросить, сильно ли это кеш напрягать будет

Дмитрий Воронин
Ну я знаю что придется прыгать + witdth поэтому и ...

Разложи двумерный массив в памяти по столбцам тогда

Дмитрий Воронин
Ну я знаю что придется прыгать + witdth поэтому и ...

Кэш будет напрягаться только если массив большой. И напрягаться будет в любом случае. А так ему без разницы. А вот из-за вычисления столбца будет нагрузка на AGU процессора, лишние такты, лишние операции, когда ты бы мог сделать +1, а вместо этого делаешь 2*4+1, к примеру. Но мы сейчас вообще бесполезный разговор ведём, на самом деле. Двумерный и одномерный массив имеют разные предназначения. И двумерный сам по себе больше, и требует больше операций к себе. Их никак нельзя обьединить или сравнить, кто лучше, кто хуже. Если у тебя на входе двумерный массив, и на выходе тоже двумерный - сортировать его бессмысленно, это ещё хуже будет.

Дмитрий-Воронин Автор вопроса
randomize usr
Разложи двумерный массив в памяти по столбцам тогд...

Так патом нужно будет сформированную текстуру отправить в видео карту. А она у меня повернута на 90 градусов получится

Дмитрий Воронин
Так патом нужно будет сформированную текстуру отпр...

Вот. О чём я и написал. На входе двумерный - на выходе двумерный. Всё, не заморачивайся. Кэшу без разницы тут, и ничего не поделаешь. Сортировать - ещё хуже будет, потому что на выходе тебе придётся второй раз сортировать обратно в двумерный.

Дмитрий Воронин
Нет, на C++

Давай на ассемблере.

Дмитрий-Воронин Автор вопроса
КТ315
Давай на ассемблере.

Ды если бы умел. Может в будущем попробую освоить. Но вот сегодня смог вот эту формулу round((vectorX[i]*scaleX) - offsetX) перевести в SSE на raspberry pi4. Это делается за две инструкции инструкция vmls которая делает a - (b*c) инстуркция vrnd которая округляет. Жаль в эти инструкции только два типа double можно всунуть. Получилось в два раза быстрей чем без этих инструкций + бросков добавил в цикле, ещё скорости добавило

Дмитрий Воронин
Вот такой алгоритм

Был популярный растровый алгоритм горящего пламени. Его часто крякеры вставляли на свои заставки. И я видел несколько реализаций на Java-апплетах. Это когда еще js с unity не было - было лишь 2 способа разнообразить веб содержимое. Ставить анимированные гифки. Или Java-applet который что-то рендерит процедурально.

Но вычисление процессор всё равно будет делать. А умножение и сложение дольше, чем сложение.

КТ315
Но вычисление процессор всё равно будет делать. А ...

А где я могу узнать информацию какой набор инструкций использовать в программе ?

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта