"BCC" <(EMail Removed)> wrote in
news:m2v%b.30906$(EMail Removed) m:
> Why the huge drop in performance in STL from VC6.0 to VC7.1?
> Particularly with vector?
>
> The following code shows what I mean...
>
> Any thoughts?
>
> Thanks,
> B
>
> //Test the speed of operations on primitive arrays and vectors
> #pragma warning(disable: 4786)
>
> #include <vector>
> #include <time.h>
> #include <iostream>
>
> using namespace std;
>
> typedef vector<int> IntVec;
>
> int main(int argc, char* argv[])
> {
> clock_t start, finish;
> start = clock();
> const int dim1 = 1000;
> const int dim2 = 10000;
>
> int* matrix[dim1];
> for(int i = 0; i < dim1; i++)
> {
> matrix[i] = new int[dim2];
> for(int j = 0; j < dim2; j++)
> matrix[i][j] = j;
> }
>
> finish = clock();
> cout << "Total time taken for " << dim1 << "x" << dim2;
> cout << " int array operations: ";
> cout << double(finishstart) / CLOCKS_PER_SEC << " seconds" << endl;
> for( i = 0; i < dim1; i++)
> {
> delete[] matrix[i];
> }
>
> start = clock();
>
> vector<IntVec> intvecs(dim1);
> for( i = 0; i < dim1; i++)
> {
> intvecs[i].resize(dim2);
> for(int j = 0; j < dim2; j++)
> intvecs[i][j] = j;
> }
>
> finish = clock();
> cout << "Total time taken for " << dim1 << "x" << dim2;
> cout << " int vector operations: ";
> cout << double(finishstart) / CLOCKS_PER_SEC << " seconds" << endl;
>
> return 0;
> }
>
> /**
> *
>==========================
>
> output from VC6.0:
>
> Total time taken for 1000x10000 int array operations: 0.12 seconds
> Total time taken for 1000x10000 int vector operations: 0.14 seconds
>
>==========================
>
> output from VC7.1:
>
> Total time taken for 1000x10000 int array operations: 0.12 seconds
> Total time taken for 1000x10000 int vector operations: 1.231 seconds
>==========================
>
> */
Well... 2 things
1) This is compilerspecific, thus offtopic for comp.lang.c++
2) Were these compiled in "release" mode and not "debug" mode?
