Ho letto su un ricettario di ottimizzazione C++ che l'allocatore standard per i contenitori STL come std :: list, std :: set, std :: multi_set, std :: map , e std :: multi_map può essere sostituito da un più performante allocatore di blocchi.std :: Assegnazione di allocatori standard di mappatura contro allocatore di blocchi
Un allocatore di blocchi ha prestazioni più elevate, bassa frammentazione e memorizzazione efficiente dei dati.
Ho trovato sul web l'FSBAllocator che afferma di essere più veloce dello standard. http://warp.povusers.org/FSBAllocator/
ho provato con std :: map e abbiamo trovato l'sembra essere più veloce in effetti, ma la mia domanda è come può essere l'implementazione STL essere così più lento di un allocatore specifico e quali sono gli svantaggi di un altro allocatore rispetto allo standard, in termini di portabilità e robustezza? Il mio codice deve essere compilato su una varietà di architetture (win32, osx, linux). Qualcuno ha esperienza con questo tipo di allocatore di blocchi di dimensione fissa?
Suppongo che l'allocatore STL sia il più generico possibile ed efficiente per la maggior parte dei casi. Non userei un altro tipo di allocatore a meno che non ci sia un vero problema di prestazioni con il mio codice. – Max
L'allocatore di blocchi suona come uno che non è in grado di allocare le dimensioni di un additivo con un sovraccarico come lo standard. –