указателей на массивы? Или же это одномерный который мы заполняем будто он двумерный?
Двумерный - значит у тебя массив разделён на строки и столбцы. Одномерный идёт просто последовательно.
Ну с каким будет легче процессору работать?
С одномерным, конечно. Но это же разные по назначению массивы. Скажем, у тебя: 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
Ну я знаю что придется прыгать + witdth поэтому и пришёл сюда спросить, сильно ли это кеш напрягать будет
Разложи двумерный массив в памяти по столбцам тогда
Кэш будет напрягаться только если массив большой. И напрягаться будет в любом случае. А так ему без разницы. А вот из-за вычисления столбца будет нагрузка на AGU процессора, лишние такты, лишние операции, когда ты бы мог сделать +1, а вместо этого делаешь 2*4+1, к примеру. Но мы сейчас вообще бесполезный разговор ведём, на самом деле. Двумерный и одномерный массив имеют разные предназначения. И двумерный сам по себе больше, и требует больше операций к себе. Их никак нельзя обьединить или сравнить, кто лучше, кто хуже. Если у тебя на входе двумерный массив, и на выходе тоже двумерный - сортировать его бессмысленно, это ещё хуже будет.
Так патом нужно будет сформированную текстуру отправить в видео карту. А она у меня повернута на 90 градусов получится
Вот. О чём я и написал. На входе двумерный - на выходе двумерный. Всё, не заморачивайся. Кэшу без разницы тут, и ничего не поделаешь. Сортировать - ещё хуже будет, потому что на выходе тебе придётся второй раз сортировать обратно в двумерный.
Вот такой алгоритм
На ассемблере написан?
Нет, на C++
Давай на ассемблере.
Ды если бы умел. Может в будущем попробую освоить. Но вот сегодня смог вот эту формулу round((vectorX[i]*scaleX) - offsetX) перевести в SSE на raspberry pi4. Это делается за две инструкции инструкция vmls которая делает a - (b*c) инстуркция vrnd которая округляет. Жаль в эти инструкции только два типа double можно всунуть. Получилось в два раза быстрей чем без этих инструкций + бросков добавил в цикле, ещё скорости добавило
Был популярный растровый алгоритм горящего пламени. Его часто крякеры вставляли на свои заставки. И я видел несколько реализаций на Java-апплетах. Это когда еще js с unity не было - было лишь 2 способа разнообразить веб содержимое. Ставить анимированные гифки. Или Java-applet который что-то рендерит процедурально.
Но вычисление процессор всё равно будет делать. А умножение и сложение дольше, чем сложение.
А где я могу узнать информацию какой набор инструкций использовать в программе ?
Обсуждают сегодня