ラベル Boost の投稿を表示しています。 すべての投稿を表示
ラベル Boost の投稿を表示しています。 すべての投稿を表示

2011年2月28日月曜日

object_poolのdestroy()がなんだか遅い

object_poolでメモリを確保したshared_ptrをvectorに大量に追加し、clear()で解放しようとした際、フリーズしたかと思うほど時間がかかったので検証してみた。

どうやら、destroy()の中で使われているordered_free()がなんかのタイミングでオーバーヘッドになってるっぽい。

以下、無駄に長い検証用コード。

2011年2月27日日曜日

shared_ptrとintrusive_ptrをメモリプールをつかって高速化してみる

引き続き、C++のメモリ動的確保の話。
shared_ptrをどうしても高速で扱えるようになりたかったので、メモリプールを組み合わせて試してみた。

まんまこちらのサイトを参考にさせてもらった。

shared_ptrとintrusive_ptrの実装方法とかパフォーマンスとか

最近、C++のメモリの動的確保や管理の方法についていろいろ調べまわっていたので、わかったことをメモしておく。

まずは、スマートポインタについて。

スマートポインタとは、登録したオブジェクトがどこからも参照されなくなったさい、自動でdeleteを呼んでくれる便利クラス。ガベージコレクションの実装された言語ばかりさわってた自分にとって、これはすごくありがたい。

shared_ptrやauto_ptr、intrusive_ptr等が存在するけど、今回はshared_ptrとintrusive_ptrの使い方とパフォーマンスを比較してみた。