2009-09-19 2 views
2

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

+3

предложите свою оценку своей точной ситуации. –

+0

@Wheat, Не могу согласиться с вами больше. – strager

ответ

7

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

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

+0

Этот ответ НЕПРАВИЛЬНО! – Elmue

1

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

+0

Этот ответ НЕПРАВИЛЬНЫЙ – Elmue

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