Здравствуйте!
Я наткнулся на такой прикол со стандартными new\delete:
enum {Count = 100000 };
typedef std::vector<void*> TVector;
TVector alloc;
for (int i = 0; i < Count; ++i)
alloc.push_back(new char[100]);
//std::random_shuffle(alloc.begin(), alloc.end()); // !!!!!!!!!!!!
for (TVector::iterator cur = alloc.begin(), end = alloc.end(); cur != end; ++cur)
delete[] *cur;
Если раскоментить помеченную строку, то скорость работы что в debug, что в release увеличится в 10-15 раз (Windows XP, MSVC 2008)
Т.е. получается, что освобождение памяти в порядке получения сильно медленнее, чем удаление в случайном порядке. А почему?
... << RSDN@Home 1.2.0 alpha 4 rev. 1441>>