id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 4307,basic_oarchive optimization,anonymous,Robert Ramey,"attached are patches that optimizes memory allocation and runtime complexity of basic_oarchive. it should not change any serialization behaviour, and archives by the patched basic_oarchive can be read by the unpatched basic_iarchive. what the patch does in detail: - replace log(O) lookup of ""cobject"" class info for each serialized class with a log(1) vector lookup. avoids container node allocation. - replace log(O) lookup of ""aobject"" object tracking info with log(1) hashing. avoids container node allocation. - use allocation pools for ""aobject"" object tracking info - store whether a class was stored as a pointer inside the ""cobject"" class info, to remove std::set stored_pointers before: - 4 allocations on construction - 1 allocation for each serialized class, tracked or not - 1 allocation for each tracked object after: - 1 allocation on construction(PIMPL) - no allocation for classes if less than 256 classes are serialized. 1 allocation for 512 classes, 2 for 1024, ... - no allocation for object tracking if less than 256 objects are serialized. after that, about 1 allocation for 16 tracked objects ",Patches,new,Boost 1.43.0,serialization,Boost 1.44.0,Optimization,,,