Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Методы оптимизации памяти - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вопрос начинающего http://www.cyberforum.ru/cpp-beginners/thread330779.html
Здравствуйте. Мне сейчас 16 лет и в сентябре я пойду в 11 класс (я школота). В будущем я хочу стать программистом. Сейчас я уже учу С++ (немножко могу гонять в консоли) и немножко Delphi. Как...
C++ Сетевая карта Добрый вечер. Подскажите в какую сторону смотреть и какие маны читать. Задача: узнать сколько у сетевой карты ethernet портов, узнать их адреса, попробовать послать в них и принять из них данные.... http://www.cyberforum.ru/cpp-beginners/thread330778.html
C++ Может кому понадобится
Кое-что из динамического программирования... Задача подсчёта в прямоугольной матрице количества связных областей (областей состоящих из смежных клеток) . В данном случае вводится матрица из нулей и...
C++ Динамическое программирование
Помогите пожалуйста,кто может, со следующими задачами, так как в С++ слабо разбираюсь, а к понедельнику надо сдать... 1. Определить сколько в линейном массиве групп одинаковых идущих подряд...
C++ Количество выводимых строк в консоли (размер буфера экрана) http://www.cyberforum.ru/cpp-beginners/thread330746.html
Такая проблема - по умолчанию в Windows размер "буфера экрана" для консоли - 300 строк. Я вывожу гораздо больше (около 1200 строк) соотв. часть обрезается и на вывод попадает не все. Есть ли...
C++ Опишите класс DETSAD Дорогие, форумчане. Помогите пож-та с заданием Опишите класс DETSAD (номер сада, количество детей, район города, плата за месяц). Введите с клавиатуры данные в массив, состоящий из шести элементов... подробнее

Показать сообщение отдельно
FiloXSee
19 / 10 / 0
Регистрация: 01.07.2011
Сообщений: 25
08.07.2011, 13:31  [ТС]
Цитата Сообщение от Maxwe11 Посмотреть сообщение
можно какие либо аргументы по 4-му пункту
Когда идет постоянная работа с объектами и их иерархиями, например в бизнесс логике, то 4-й пункт будет практически не применим. Он применим тогда, когда проектируется некая система с большим количеством данных.

Пример: вы собираетесь делать систему частиц. Понятно что внешнему коду не нужно работать с конкретной частицей в отдельности (никогда не нужно). Из вне придет команда - обновить/отрисовать систему частиц. Этот процесс будет значительно ускорен, если частицы будут идти в памяти подряд (будет меньше обращений к памяти).

Как выглядит обновление частиц:
1. нужно для всех частиц изменить позицию
2. нужно для всех частиц изменить вращение
... цвет и прочие параметры.

Если данные будут представлены в виде последовательности частиц то: размер частицы 64 байта. Из памяти берется за раз 64 байта. Это значит что при обновление на каждую частицу будет по запросу к памяти (который 600 тактов, в то время как вычисления будут 12-15 тактов, т.е. будет тормозить доступ к памяти, а не математика).

Если же организовать все как в пункте 4-е, т.е. раcположить сначала все позиции в памяти, затем все повороты и т.д., то за раз будет получено 64/16=4 позиции для 4-х партиклов (тут 16 байт это размер структуры float x,y,z,w). т.е. для расчета всех партиклов будет в 4-е раза меньше запросов к памяти, скорость выполнения увеличится более чем в 3-и раза.

4-й метод актуален когда расчеты часто проводятся по какому то параметру структуры. Например найти объект по индексу. Это будет значительно быстрее если индексы будут в отдельном массиве.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru