о методах оптимизации и работы с памятью в C++
Хочу поделиться своим опытом по программированию и работе с памятью. Уже давно пришел к выводу, что для того, чтобы написать эффективный код (который будет быстро работать) нужно учитывать в первую очередь размещение объектов в памяти. Особенно это проявляется в методе программирования Data oriented design. Это метод, при котором в первую очередь проектирование новой системы начинают с решения, как будут в памяти размещаться ее элементы.
Современные CPU работают очень быстро и эффективность алгоритмов в значительной мере зависит не от самого алгоритма, а от того, как эти алгоритмы работают с памятью (тут речь идет не про фундаментальные алгоритмы сортировки, поиска и т.п. а прикладные алгоритмы реальных программ).
Современные CPU работают очень быстро и эффективность алгоритмов в значительной мере зависит не от самого алгоритма, а от того, как эти алгоритмы работают с памятью (тут речь идет не про фундаментальные алгоритмы сортировки, поиска и т.п. а прикладные алгоритмы реальных программ).
Вот базовые рекомендации при проектировании системы и написании кода, которые я выработал для себя:
1. Минимизируйте количество выделений памяти
2. Используйте хранилища данных
3. Храните одинаковые данные вместе
4. Работайте не с объектами а с коллекциями объектов
5. Поблочное выделение памяти
6. Учитывайте выравнивание
7. Знайте размер типов
Все это, с примерами, и деталями реализации и объяснениями и описал в своей статье: http://itw66.ru/blog/c_plus_plus/491.html
