Mit VS2015 ist das Löschen eines Vectors mit Skalaren Typen extrem langsam geworden.
std::vector<uint8_t> vecData;
vecData.resize(4000000);
vecData.clear();
Das Ausführen dieses Codes benötigt unter VS2015 auf meinem Sytem ca 450ms.
Unter VS2013 wird der Code in 0ms ausgeführt.
Code std::vector VS2013
template<class _Alloc> inline
void _Destroy_range(typename _Alloc::pointer _First,
typename _Alloc::pointer _Last, _Alloc& _Al,
_Scalar_ptr_iterator_tag)
{ // destroy [_First, _Last), scalar type (do nothing)
}
Code std::vector VS2015
template<class _Alloc> inline
void _Destroy_range(typename _Alloc::pointer _First,
typename _Alloc::pointer _Last, _Alloc& _Al)
{ // destroy [_First, _Last)
for (; _First != _Last; ++_First)
_Al.destroy(_STD addressof(*_First));
}
Im Grunde bin ich auf denselben Fehler gestoßen wie hier:
stackoverflow -> Vector specialization for scalar types gone in Visual C++ 2015?
Ist dieses Verhalten beabsichtigt oder einfach nur ein Fehler?