malloc和memset效能比較
阿新 • • 發佈:2019-02-06
前一段跟同事聊專案組已有的一些工具,同事講裡面有太多的malloc與memset,對效能的影響比較大,因此今天就在自己的機器上測試了這兩個函式,不多說,上資料。
測試環境:2.2GHZ、2G記憶體
memset一段大小為1K的buf,每秒有1200萬次;10K的buf,每秒有260萬次;100K的buf,每秒有13萬次。
malloc一段大小為1K的buf,每秒有110萬次;10K的buf,每秒有50萬次;100K的buf,每秒有5萬次。
總結:
1:malloc與memset的時間開銷在程式設計中確實應該有所注意,並不是白用的。
2:malloc與memset操作的時間開銷與buf的長度成反比,有線性關係。
3:malloc的時間開銷是memset的10倍,malloc一段大小為1K的buf每秒為百萬次。
4:個人理解這兩個函式很難避免使用,只能是說盡量少用。瞭解這兩函式速度更多的意義可能是更好的估算我們程式的效能。
歡迎批評、指證
同時頻繁malloc會早造成大量記憶體碎片,影響程式效能。
所以在確定所將要分配的記憶體最大長度限制時,往往通過預分配足夠大的記憶體來進行重複利用,從而避免頻繁malloc/free,為保證資料安全,通常在每次使用前memset清0.
如果申請的記憶體空間較小,使用棧空間。