Методы оптимизации памяти
http://itw66.ru/blog/c_plus_plus/491.html
А какие методы вы можете предложить по повышению эффективности программы, при помощи организации данных в памяти определенным образом?
А какие методы вы можете предложить по повышению эффективности программы, при помощи организации данных в памяти определенным образом?
Использовать сборщик мусора. :)
Желателен обзорный пример маленького "менеджера памяти" - с выделением, освобождением и прочими штуками, и, если хотите "ближе к телу", то и взаимодействие его с.. ну, назовем это "менеджер ресурсов", хотя это и некорректно.
К виновнику торжества))) aks, братишка, к тебе другие вопросы будут)
- Из какой памяти идет получение данных?
- Для какой платформы магические цифры?
Обращение к L1 — 20 тактов.
Обращение к L2 — 100 тактов.
Обращение к общей памяти — 600 тактов.
- Откуда взяты и сии магические цифры?
- Что значат L1 / L2 и как сии кэши влияют на все остальное?
PS: В общем снова по боянным вершкам пробежались.
Желателен обзорный пример маленького "менеджера памяти" - с выделением, освобождением и прочими штуками, и, если хотите "ближе к телу", то и взаимодействие его с.. ну, назовем это "менеджер ресурсов", хотя это и некорректно.
Это тянет на полноценную статью (может и не одну). Когда напишу, опубликую ссылки. В любом случае это будет на сайте http://itw66.ru, так что подписывайтесь, если заинтересовало.
Из оперативной памяти.
L1 и L2 - это кэши процессора. L1 - это самая быстрая до которой может добраться процессор. L2 медленнее, ну а оперативная память так вообще очень медленная (сравнительно конечно).
Это цифры в тактах процессора для процессоров Intel возможно 2-х или 3-х летней давности. Смысл этих цифр в том, что явно видно на сколько различные типы памяти разные по скорости. Даже если на другой платформе сами цифры будут другие, но их соотношение в целом будет такое же.
Смысл в том, что в алгоритмах, где идет интенсивная работа с данными, доступ к памяти может сыграть лимитирующую роль и скорость работы программы будет ограничена именно доступом к памяти, а не вычислительными возможностями процессора. Поэтому в таких случаях нужно следить за тем, как данные располагаются в памяти и как к ним осуществляется доступ. Порой можно значительно ускорить работу алгоритма просто изменив расположение данных в памяти.
PS: Ваша первая цифра зовется кэш-линейкой.