Снижение производительности за использование вектора C ++ вместо массива C - PullRequest
2 голосов
/ 19 сентября 2009

Есть ли снижение производительности при работе с вектором из стандартной библиотеки в C ++ вместо массивов в C?

Ответы [ 2 ]

7 голосов
/ 19 сентября 2009

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

Массивы фиксированного размера в C будут иметь небольшое преимущество в том, что их адрес фиксируется после компоновки (если он глобальный), или что они живут непосредственно в стеке, а не косвенно через указатель куда-то в куче. Я верю, что по-прежнему нет разницы в производительности; постоянные базовые адреса не быстрее переменных; оба загружаются в регистр процессора.

1 голос
/ 23 сентября 2009

Единственная реальная разница в том, что доступ с помощью std :: vector проходит через тривиальные функции. Пока вы используете соответствующий уровень оптимизации, чтобы эти вызовы функций были встроенными, они будут одинаковыми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...