2015-04-15 1 views
-6

Как производительность boost :: container :: vector сравнивается с производительностью std :: vector, и какие факторы оказывают на него значительное влияние?Стандартный векторный и форсированный вектор push_back: что быстрее?

В частности, я слышал, что std :: vector push_back медленнее по сравнению с вектором []. Как это сравнивается с повышением?

+1

Каковы результаты тестов по вашему предполагаемому использованию? –

+2

* Я слышал, что std :: vector push_back медленнее по сравнению с вектором [] * эти две вещи не делают то же самое вообще, нет смысла сравнивать, насколько они быстры. – Borgleader

+0

std :: vector может быть медленнее в отладочных сборках (особенно при использовании microsoft (dinkumware)). В версиях релизов не должно быть разницы. –

ответ

1

вектор простой концепции. Существует много реализаций std, реализация ускорения, реализация MFC и сто тысяч других реализаций. И все они должны быть близки к той же скорости в абстрактной форме.

Во всех из них нет смысла сравнивать push_back с operator[], так как они делают 100% разные вещи. Один проверяет емкость, возможно перераспределяет/перемещает, создает новый элемент на обратной стороне. Другой просто обращается к элементу, который уже существует. Однако, поскольку operator[] фактически не do ничего, он всегда будет быстрее.