вставлю свои 5 копеек. взял приведенный код, собрал консольный Win32 проектик на своей студии 2012 SP4.погонял, потом чуток модернизировал и опять погонял. и так
наполнение, пушбэки лишние, если известен размер массива:
TmpVector.resize(VectorSize);
for (TestVector::size_type i = 0; i < VectorSize; i++)
{
TmpVector[i] = new double(0.001);
}
удаление, слегка оптимизировано:
//-> это выше функции int _tmain(int argc, _TCHAR* argv[])
struct delete_ptr
{
template <typename T>
void operator()(T* pPtr)
{
delete pPtr;
}
};
//<-
std::for_each(TmpVector.begin(), TmpVector.end(), delete_ptr());
// TestVector::iterator TmpIter1 = TmpVector.begin();
// while (TmpIter1 != TmpVector.end())
// {
// double* tt = (double*) *TmpIter1;
// delete tt;
// ++TmpIter1;
// }
TmpVector.clear();
самое замечательное, что при заданном размере массива в 5млн разброс цифр при 10-15 запусках идет такой, что никакие закономерности проследить вообще не получается. но если увеличить размер массива раз в 10-20, то порядок разброса цифр уменьшается в разы. например, время создания для 5млн идет от 0.16 до 0.26 сек., а для 50млн - 1.85 - 1.89 сек., так что, увы, 5млн элементов недостаточно для выявления хоть какой-то статистики.
PS: ну и от себя добавлю, если тестирование проводить на "загруженном" компьютере, то результат может быть непредсказуемым. Например, одновременно играть в сапера, слушать музыку, болтать в скайпе и тестировать этот код ))). я пока плеер не закрыл, подумал, что программа зависла ). ну и еще студия вечно гребет ресурсы, так что и её лучше закрывать.