
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Monday 02 March 2009, Frank Mori Hess wrote:
On Monday 02 March 2009, Thorsten Ottosen wrote:
you might not expect 95% of all lines to be less than 512 chars. Thus you can use
boost::auto_buffer<char,512> buffer;
to avoid heap-allocations in 95% of the cases. This can be a major speed-improvement. For the remaining 5% of the cases, the buffer will be placed on the heap, but the code from the user's persective remains the same.
From glancing at the implementation posted to the list, it does not appear to fall back to heap allocation once the maximum stack capacity is reached. push_back() simply asserts that the stack capacity hasn't been used up yet. Although, I would be able to use such a container if it were added as a utility to boost, as I implemented one for my own use as an internal optimization in Boost.Signals2 (boost/signals2/detail/stack_vector.hpp and stack_allocator.hpp).
Ah, looking at little further at the code I see when you say fall-back on the heap, you only mean you can pass a capacity to the constructor that exceeds the stack storage, but the auto_buffer can never be resized after that. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEARECAAYFAkmsAVwACgkQ5vihyNWuA4UH/wCfZoczUieYwY4CKwVnhXEPHKlj N/EAoNvOYkK7szkS4ngU7AKRnTB9bN68 =taMD -----END PGP SIGNATURE-----