2016-12-06 2 views
0

Существует множество тем о скорости доступа к переменным стека и кучи, но я не мог найти вопрос и правильный ответ о скорости доступа для переменных статического и кучи.Скорость доступа к статической памяти и памяти кучи

Что следует делать (с точки зрения скорости доступа), если срок службы объекта совпадает с временем жизни программы? Что быстрее - с использованием объекта или объекта со статическим распределением в куче?

Я говорю о C++, если это уместно.

+1

С большинством современных операционных систем никакой разницы. –

ответ

2

Нет никакой разницы. Абсолютно. Когда ваша программа загружена, процессор просто не знает, в какой памяти (куче или статике) он имеет дело.

Вышеупомянутое верно для 95% наиболее распространенных архитектур/реализаций ЦП. Хотя на некоторых компьютерах могут быть разные области памяти, которые работают с разной скоростью. Если это так, вам нужно проверить это. Как отображается эта память - это зависит от дизайна.

В зависимости от программ компилятора/среды с большими статическими областями может загружаться несколько медленнее. Но это не абсолютное правило.

Было бы лучше подумать о местонахождении ваших данных (ваши данные хранятся рядом друг с другом или нет) и как одно значение выкинет другое значение из кэша процессора. Загрузка чего-то в кеш в 10-100 раз медленнее, чем доступ к тому, что уже находится в кеше. Это сделает ОЧЕНЬ заметную разницу.

+0

Благодарим за ответ, локальность данных и архитектура программы выходят за рамки вопроса. Я просто не мог найти хорошую информацию о фактическом времени доступа к статической/кучевой памяти и спросил об этом сообщество. – avtomaton

Смежные вопросы