Dynamically allocated arrays or std::vector
c++, optimization, performance, stl
Solution
When benchmarking C++ comtainers, it's important to enable most compiler optimisations. Several of my own answers on SO have fallen foul of this - for example, the function call overhead when something like operator[] is not inlined can be very significant.
Problem
I'm trying to optimize my C++ code. I've searched the internet on using dynamically allocated C++ arrays vs using std::vector and have generally seen a recommendation in favor of std::vector and that the difference in performance between the two is negligible. For instance here - Using arrays or std::vectors in C++, what's the performance gap?. However, I wrote some code to test the performance of iterating through an array/vector and assigning values to the elements and I generally found that using dynamically allocated arrays was nearly 3 times faster than using vectors (I did specify a size for the vectors beforehand). I used g++-4.3.2. However I feel that my test may have ignored issues I don't know about so I would appreciate any advice on this issue. Thanks Code used - ``` #include <time.h> #include <iostream> #include <vector> using namespace std; int main() { clock_t start,end; std::vector<int> vec(9999999); std::vector<int>::iterator vecIt = vec.begin(); std::vector<int>::iterator vecEnd = vec.end(); start = clock(); for (int i = 0; vecIt != vecEnd; i++) { *(vecIt++) = i; } end = clock(); cout<<"vector: "<<(double)(end-start)/CLOCKS_PER_SEC<<endl; int* arr = new int[9999999]; start = clock(); for (int i = 0; i < 9999999; i++) { arr[i] = i; } end = clock(); cout<<"array: "<<(double)(end-start)/CLOCKS_PER_SEC<<endl; } ```