none
Fehlende vector spezialisierung für Skalare Typen RRS feed

  • Allgemeine Diskussion

  • 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?






    • Bearbeitet MoDMyNitro Dienstag, 3. Mai 2016 07:44
    Montag, 2. Mai 2016 15:56

Alle Antworten

  • Hi,

    kann das Problem bei mir nicht nachvollziehen.

    Das Code Snippet benötigt bei mir mit VS2013 und VS2015 unter 4ms (Screenshot ist aus VS2015).

    Gruß,

    David

    Sonntag, 5. Juni 2016 17:11