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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
FiloXSee
19 / 10 / 0
Регистрация: 01.07.2011
Сообщений: 25
#1

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

08.07.2011, 08:11. Просмотров 671. Ответов 8
Метки нет (Все метки)

Написал статью по оптимизации памяти в программах на С++. Ее можно почитать тут:
http://itw66.ru/blog/c_plus_plus/491.html

А какие методы вы можете предложить по повышению эффективности программы, при помощи организации данных в памяти определенным образом?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2011, 08:11     Методы оптимизации памяти
Посмотрите здесь:

Методы оптимизации - C++
Здравствуйте, прошу помочь,кто может написать программу для решения задачи используя 2 метода ?1)Метод золотого сечения 2)Метод...

Курсовая. Методы оптимизации - C++
http://www.cyberforum.ru/attachments/402404d1400795723 Помогите чем сможете Заранее спасибо

Методы оптимизации кода - C++
Написал статью по оптимизации кода на С++. Ее можно почитать тут: А вы какие еще способы оптимизации кода знаете? (я не говорю про...

Методы Оптимизации: Метод параллельных касательных - нужен алгоритм - C++
Здравствуйте. Помогите пожалуйста с составлением алгоритма по методу параллельных касательных. Пытался читать литературу, но там алгоритмы...

Задача по методам оптимизации - C++
Всем доброго времени суток! Необходимо запрограммировать метод тяжелого шарика. Заранее спасибо!

Документация по флагам оптимизации - C++
Подскажите мануал, документацию, гайд по флагам оптимизации. Желательно на русском. А то у меня программа весело себя ведёт. ...

Дайте совет по оптимизации - C++
Необходимо оптимизировать реализацию морского боя. Изначально поле представлял в виде символьного массива, естественно длинной 10х10 ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
08.07.2011, 11:56     Методы оптимизации памяти #2
можно какие либо аргументы по 4-му пункту
FiloXSee
19 / 10 / 0
Регистрация: 01.07.2011
Сообщений: 25
08.07.2011, 13:31  [ТС]     Методы оптимизации памяти #3
Цитата Сообщение от 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-й метод актуален когда расчеты часто проводятся по какому то параметру структуры. Например найти объект по индексу. Это будет значительно быстрее если индексы будут в отдельном массиве.
olympian
2 / 2 / 0
Регистрация: 18.10.2008
Сообщений: 33
08.07.2011, 14:48     Методы оптимизации памяти #4
3 пункт
Пишешь, что не нужна проверка - зато передача матрицы по значению, а не ссылке или указателю - нас не волнует. Если это матрица преобразования, то ее размер какой? 4 * 4 * sizeof(double) (правда нехило так?) - и копирование займет гораздо больше, чем "ненужная" проверка
FiloXSee
19 / 10 / 0
Регистрация: 01.07.2011
Сообщений: 25
08.07.2011, 15:42  [ТС]     Методы оптимизации памяти #5
Цитата Сообщение от olympian Посмотреть сообщение
3 пункт
Пишешь, что не нужна проверка - зато передача матрицы по значению, а не ссылке или указателю - нас не волнует. Если это матрица преобразования, то ее размер какой? 4 * 4 * sizeof(double) (правда нехило так?) - и копирование займет гораздо больше, чем "ненужная" проверка
Резонное замечание. Конечно там передается по ссылке (можно по указателю - без разницы). Исправил..

Размер матрицы 4 * 4 * sizeof(float). double - это достаточно редко применяемый в компьютерной графике формат. Разве что в каких математических приложениях.
olympian
2 / 2 / 0
Регистрация: 18.10.2008
Сообщений: 33
08.07.2011, 16:46     Методы оптимизации памяти #6
Цитата Сообщение от FiloXSee Посмотреть сообщение
Размер матрицы 4 * 4 * sizeof(float). double - это достаточно редко применяемый в компьютерной графике формат. Разве что в каких математических приложениях.
В каком плане редко применимый? А каким образом хранится матрица N x N, чтобы ее размер был меньше N * N * sizeof()?
pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
08.07.2011, 16:52     Методы оптимизации памяти #7
Цитата Сообщение от olympian Посмотреть сообщение
В каком плане редко применимый
в плане компьютерной графики, написано же
FiloXSee
19 / 10 / 0
Регистрация: 01.07.2011
Сообщений: 25
08.07.2011, 17:00  [ТС]     Методы оптимизации памяти #8
Цитата Сообщение от olympian Посмотреть сообщение
В каком плане редко применимый? А каким образом хранится матрица N x N, чтобы ее размер был меньше N * N * sizeof()?
Если очень хочется то могу на вскидку выдать способ, при котором матрица N x N будет меньше N * N * sizeof(type). Допустим ты хранишь разряженную матрицу большого размера, т.е. N - большой, но известно, что только 5% ячеек будут не нулевыми. Тогда можно хранить в виде массива структур <x,y,value>.

Но я конечно имел в виду компьютерную графику и матрицу 4 * 4 * sizeof(float).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2011, 17:03     Методы оптимизации памяти
Еще ссылки по теме:

Влияние оптимизации? Или UB? - C++
Добрый день, подскажите, вроде действия одинаковы, но программа выводит разный результат. Разбираюсь с указателями, пример условный,...

MinGW и странности оптимизации - C++
Долго бился, почему банальная строка for(;isLButtonDown();){} не работает как надо, а уходит на бесконечный цикл. (на всякий случай....

Нужен код, нуждающийся в оптимизации - C++
ребята - несколько необычная просьба - у кого нибудь может есть небольшой по объему ( меньше 500-600 строчек) код, написанный как можно...

Странное поведение оптимизации у MVS-C++ - C++
Имеется простейший код: if(len == -1) len = strlen(source); Пока работает в режиме Debug все хорошо, но стоит переключить...

Просмотр кода после оптимизации компилятора - C++
Здравствуйте! Известно, что компилятор оптимизирует код. А можно ли посмотреть оптимизированный код до того, как он будет переведен в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
olympian
2 / 2 / 0
Регистрация: 18.10.2008
Сообщений: 33
08.07.2011, 17:03     Методы оптимизации памяти #9
Всё, понял
Удивился - как можно хранить х байт в меньшем числе, не подумал о специфичном виде
Yandex
Объявления
08.07.2011, 17:03     Методы оптимизации памяти
Ответ Создать тему
Опции темы

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