Go back to Richel Bilderbeek's homepage.

Go back to Richel Bilderbeek's Code Snippets.

 

 

 

TestSpeedIndexingVersusIterators

 

A simple benchmark test that tests the speed of incrementing each 2D-vector's elements. It compares the speed of doing so using indexing versus using iterators.

 

The use of iterators appears to be faster.

 

* View the code of 'TestSpeedIndexingVersusIterators' in plain text.

 

#include <iostream>

#include <vector>

#include <boost/timer.hpp>

 

//From http://www.richelbilderbeek.nl

int main()

{

const int size = 5000;

const int nRepeat = 1;

 

std::vector<std::vector<int> > v(size,std::vector<int>(size));

 

double tIndexing = 0.0;

//Add nRepeat times 1 to each element using indexing

{

boost::timer t;

for (int i=0; i!=nRepeat; ++i)

{

for (int y=0; y!=size; ++y)

{

for (int x=0; x!=size; ++x)

{

++v[y][x];

}

}

}

tIndexing = t.elapsed();

}

 

double tIterator = 0.0;

//Add nRepeat times 1 to each element using iterators

{

boost::timer t;

for (int i=0; i!=nRepeat; ++i)

{

const std::vector<std::vector<int> >::iterator rowIterEnd = v.end();

for (std::vector<std::vector<int> >::iterator rowIter = v.begin();

rowIter!=rowIterEnd;

++rowIter)

{

const std::vector<int>::iterator colIterEnd = (*rowIter).end();

for (std::vector<int>::iterator colIter = (*rowIter).begin();

colIter!=colIterEnd;

++colIter)

{

++(*colIter);

}

}

 

}

tIterator = t.elapsed();

}

 

std::cout << "Time indexing: " << tIndexing

<< "\tTime iterator: " << tIterator << std::endl;

std::cin.get();

}

 

 

 

Go back to Richel Bilderbeek's Code Snippets.

Go back to Richel Bilderbeek's homepage.