B
BCC
I am noticing what seems to be a 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 = new int[dim2];
for(int j = 0; j < dim2; j++)
matrix[j] = j;
}
finish = clock();
cout << "Total time taken for " << dim1 << "x" << dim2;
cout << " int array operations: ";
cout << double(finish-start) / CLOCKS_PER_SEC << " seconds" << endl;
for( i = 0; i < dim1; i++)
{
delete[] matrix;
}
start = clock();
vector<IntVec> intvecs(dim1);
for( i = 0; i < dim1; i++)
{
intvecs.resize(dim2);
for(int j = 0; j < dim2; j++)
intvecs[j] = j;
}
finish = clock();
cout << "Total time taken for " << dim1 << "x" << dim2;
cout << " int vector operations: ";
cout << double(finish-start) / 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
==========================
*/
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 = new int[dim2];
for(int j = 0; j < dim2; j++)
matrix[j] = j;
}
finish = clock();
cout << "Total time taken for " << dim1 << "x" << dim2;
cout << " int array operations: ";
cout << double(finish-start) / CLOCKS_PER_SEC << " seconds" << endl;
for( i = 0; i < dim1; i++)
{
delete[] matrix;
}
start = clock();
vector<IntVec> intvecs(dim1);
for( i = 0; i < dim1; i++)
{
intvecs.resize(dim2);
for(int j = 0; j < dim2; j++)
intvecs[j] = j;
}
finish = clock();
cout << "Total time taken for " << dim1 << "x" << dim2;
cout << " int vector operations: ";
cout << double(finish-start) / 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
==========================
*/