« 固定サイズメモリのアロケート | メイン | メモリのアライメント2 »

2007年12月17日

基本テクニック:: メモリアロケートを計ってみる

    

メモリのアロケート malloc について固定サイズメモリのアロケート を書いたついでに、少し時間を計測してみた。
ただ、単純に100万回メモリ確保して、100万回メモリ開放しただけなので、まったく当てにならない。
実際の利用状況では、可変の時断片化され、もっと遅くなるはず。
ということで Athlon 64 X2 3800+ で測った結果。

VC2005 の malloc 420 ミリ秒
固定サイズ版 14 ミリ秒
可変版 33 ミリ秒

固定サイズはやはり速いな。でも、標準の malloc が思ったよりも遅いが、仮想記憶とかいろいろとやることあるだろうから仕方ない。 ※ 追記参照。
でも、100万回やってこの時間。
PC では、開発効率や安全性を考えると無視してもいい時間だろう。
というか、PC では自分で書いたのを使う気にはなかなかなれない。

可変内でいくつかの固定サイズを持ち、それらを振り分けるなどすると小領域の時の速度は大きく改善されるはず。
確保や開放のログを取り、その傾向から適した方法を選ぶのが良いと思う。
とは言っても、メモリの確保や開放の速度が問題になることはほとんどなく、どちらかといえば断片化によりメモリが枯渇してしまうことへどう対処するかの方が問題なのだが。

3:30 追記
排他制御のことを忘れていた。
他スレッドから呼ばれても大丈夫なようにロックする処理が重いということのようだ。



投稿者 Takenori : 2007年12月17日 01:42




comments powered by Disqus
Total : Today : Yesterday : なかのひと