2015-11-18 23 views
5

, bu.Clear arayarak() veya C++ std üzerinde .erase() :: Multimap bazen donma (% 100 cpu) Biz hızlı değer/dizin aramaları için Multimap kullanıyorsunuz

typedef double Numerical; 
std::multimap<Numerical, Int32> SortableRowIndex; 

Ve benzeri ilan sebep olur

Çiftler ile doldurarak, çiftlerle doldururuz. GetSortable() işlevi her zaman bir çift döndürür. Ve bu iyi çalışıyor. Değerler arasında geçiş yapmak gayet iyi çalışıyor. Ama sonra en CPU kullanılan çekirdek hogging, döngü ve tezgahları/ırklar çeşit gider ... ... biz verileri temizlenmiş bazen zaman ...

SortableRowIndex.clear(); 

garip kısmı geliyor 100%.

berrak yöntem xtree (sistem dosyası) miras gibi görünüyor ve içindeki satırların sadece coupld vardır: Nedense

void clear() _NOEXCEPT 
     { // erase all 
#if _ITERATOR_DEBUG_LEVEL == 2 
     this->_Orphan_ptr(*this, 0); 
#endif /* _ITERATOR_DEBUG_LEVEL == 2 */ 

     _Erase(_Root()); 
     _Root() = this->_Myhead; 
     _Lmost() = this->_Myhead; 
     _Rmost() = this->_Myhead; 
     this->_Mysize = 0; 
     } 

, benim Visual Studio 2013 beni içine adım izin vermez hata ayıklama yaparken bu yöntem ... ve yapamam, hayatımın için problemin ne olduğunu anlamaya çalış!

Herhangi bir yardım gülünç takdir edilecektir! Sonradan anlaşıldı ki, gerçekten durdurduklarını ancak Visual Studio'nun, ayıklayıcıya üzerinden bir Multimap temizlenmediğinden

+2

musunuz? –

+2

bu http://stackoverflow.com/questions/8096817/is-nan-a-valid-key-value-for-associative-containers yere ... ne demek istediğini anlamaya girişi çalışılıyor – Slava

+0

ilgili olabilir? –

cevap

3

GERÇEKTEN YAVAŞ olduğunu. Hafızanın salıverildiğini fark ettim ve birkaç dakika çalışmasına izin verdikten sonra sonunda yapıldı. Visual Studio dışındaki uygulamayı çalıştıran .clear() çağrıları, milyonlarca çift için bile < 1s'e iner. Görsel stüdyoda ayıklama modunda çalıştırırken büyük multimaps temizleyerek eğer

Yani, dikkat edin. Sloooooow. girdi orada herhangi NaN'ler

+0

Görünüşte Sürüm modu, Visual Studio'nun hata ayıklayıcısını çalıştırırsanız yavaştır. –

+0

Hala merak ettiyseniz, doğrudur. – Carbon