• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            那誰的技術博客

            感興趣領域:高性能服務器編程,存儲,算法,Linux內核
            隨筆 - 210, 文章 - 0, 評論 - 1183, 引用 - 0
            數據加載中……

            研究了一下SGI STL的內存算法

            原理在STL源碼剖析中已經有闡述,這里簡單的說一下,該內存池采用HASH-LIST數據結構管理數據,分配一塊內存時,如果所要求的內存超過了某個數量就直接調用malloc分配內存, 否則首先進行數據對齊,根據這個對齊的結果得到所在的HASH表,在該HASH-LIST中查找時候存在可用的節點,如果有就直接返回,否則每次以20個節點元素為數量開始增加LIST中的元素數量,如果仍然分配失敗了就去下一個HASH表中查找可用內存,依次類推.

            比如,這里的實現對齊大小為512字節,如果要求分配的內存不大于512字節就自動調整為512字節的數據大小,在512字節的HASH-LIST中查找可用節點.

            代碼和測試程序見附件,個人認為很巧妙,適合小對象的頻繁分配/釋放,效率比之單純的使用malloc/free提高了很多.

            不知道還有哪些優秀的內存池實現算法可以參考的?

            BTW:這份代碼不是我寫的,網上搜索所得,作者模擬了SGI STL的內存池算法,我自己做了一些整理和注釋,向作者致敬.

            另外,在我的機器上的測試結果為:
            采用內存池:
            real    0m10.723s
            user    0m10.710s
            sys     0m0.000s

            采用系統的malloc/free:
            real    0m12.969s
            user    0m12.950s
            sys     0m0.000s

            點擊這里下載代碼.

            posted on 2008-04-01 19:55 那誰 閱讀(6643) 評論(6)  編輯 收藏 引用 所屬分類: C\C++算法與數據結構服務器設計

            評論

            # re: 研究了一下SGI STL的內存算法  回復  更多評論   

            http://m.shnenglu.com/CppExplore/archive/2008/02/18/42890.html
            http://m.shnenglu.com/CppExplore/archive/2008/02/19/42952.html
            http://m.shnenglu.com/CppExplore/archive/2008/02/20/42986.html
            2008-04-01 21:00 | cppexplore

            # re: 研究了一下SGI STL的內存算法[未登錄]  回復  更多評論   

            @cppexplore
            準備下一步研究在這里面評價最好的APR.

            其實說到實踐證明,STL和APR都是有成功項目證明的產品,可靠性會更高些.其他的畢竟還是個人的產品,沒有經過千錘百煉.

            2008-04-01 22:39 |

            # re: 研究了一下SGI STL的內存算法  回復  更多評論   

            @創
            你看的第一篇吧,對于小對象后面的loki和boost都不錯的。
            不要浪費精力研究了,就是一個結構,原理都很簡單,看的太仔細了也是沒什么意思,呵呵。
            2008-04-01 22:50 | cppexplore

            # re: 研究了一下SGI STL的內存算法[未登錄]  回復  更多評論   

            @cppexplore
            另外,很奇怪你的系列文章中居然沒有分析STL內存池實現的。
            2008-04-01 22:51 |

            # re: 研究了一下SGI STL的內存算法  回復  更多評論   

            @創
            呵呵,不奇怪啊。我壓根就沒看stl的內存池,ACE的看了,果然是集大成者,到是想寫呢,后來寫多了加上去寫其他方面的 就懶了。
            現在網絡模型的也是寫了一半,下一篇估計就是去寫定時期了,呵呵
            2008-04-01 22:53 | cppexplore

            # re: 研究了一下SGI STL的內存算法  回復  更多評論   

            去看了下cppex的文章,發現問了句廢話,呵呵,已經改掉了。
            希望看到ACE內存池詳細分析的文章。
            2008-04-02 01:46 | 矩陣操作
            91麻豆国产精品91久久久| 午夜欧美精品久久久久久久| 青青草国产精品久久久久| 99国产精品久久久久久久成人热| 久久久精品人妻一区二区三区四 | 久久久噜噜噜久久熟女AA片| 久久久久高潮毛片免费全部播放| 狠色狠色狠狠色综合久久| 久久久久噜噜噜亚洲熟女综合| 久久亚洲sm情趣捆绑调教| 精品九九久久国内精品| 一本久久a久久精品综合香蕉| 国内精品久久久久久久97牛牛| 国产精品成人99久久久久91gav| 久久久无码精品亚洲日韩京东传媒| 国产精品久久影院| 一级做a爰片久久毛片毛片| 亚洲精品无码久久久久久| 久久久精品日本一区二区三区 | 国产精品久久久久影院嫩草| 99久久免费国产精品特黄| 91精品国产91热久久久久福利| 婷婷久久香蕉五月综合加勒比| 韩国三级中文字幕hd久久精品| 亚洲国产精品无码久久SM| 亚洲国产成人久久一区WWW| 久久国产精品波多野结衣AV| 高清免费久久午夜精品| 国产麻豆精品久久一二三| 狠狠色噜噜色狠狠狠综合久久| 理论片午午伦夜理片久久| 久久久久国产一区二区三区| 国产精品免费久久| 91精品国产91久久久久久青草| 国产精品久久久天天影视| 久久精品国产影库免费看| 久久国产精品久久久| 国产麻豆精品久久一二三| 久久国产精品99久久久久久老狼| 国产精品视频久久久| 国产精品午夜久久|