[Mona] mallocが遅い
MonaDatがWin版では速いのに、Monaでは遅いということから、有志の方たちが
いろいろと実験・調査をして下さっている。
http://wiki.monaos.org/index.php?MonaDat%2F%A5%DC%A5%C8%A5%EB%A5%CD%A5%C3%A5%AF
http://wiki.monaos.org/index.php?Mona%2Fmalloc
その結果、mallocが遅いことが分かった。どうも小さいメモリの割り当てを繰り返すと遅いようだ。
mallocは、MemoryManager#allocateを読んでいるので実際には、MemoryManager.cppのコードが悪いということになる。
よくよく調べてみるとこのコードは2002年に書かれたモノであまり出来がよろしくない。
メモリ管理といえば、ファーストフィット・ベストフィット・ワーストフィットなどのアルゴリズムがあるのだが、MemoryManagerではファーストフィットを採用している。
ファーストフィット自体は良いアルゴリズムなのだが、今見ると(私の)実装がだめだめ。
というわけでいろいろ考えてみます。
なおメモリ管理のアルゴリズムは↓が詳しく
オペレーティングシステム―設計と理論およびMINIXによる実装
- 作者: A.S.タネンバウム,A.S.ウットハル,今泉貴史,Andrew S. Tanenbaum,Albert S. Woodhull,千輝順子
- 出版社/メーカー: ピアソン・エデュケーション
- 発売日: 1998/05/01
- メディア: 単行本
- クリック: 132回
- この商品を含むブログ (43件) を見る
ファーストフィットの有名な実装は、必須本 K&R にのっています。(id:yaneurao:20050514でも紹介されていますね)
- 作者: B.W.カーニハン,D.M.リッチー,石田晴久
- 出版社/メーカー: 共立出版
- 発売日: 1989/06/15
- メディア: 単行本
- 購入: 28人 クリック: 721回
- この商品を含むブログ (200件) を見る