回答
如果你問一個關於C/C++程序的一般分配器,那麼我發現這篇文章Hoard: A Scalable Memory Allocator for Multithreaded Applications考慮了這個問題。這是本文檔
報價目前還的 基準評估 多線程分配器沒有標準套件。我們知道 沒有特別強調的基準 服務器的多線程性能 應用程序,如web服務器1和 數據庫管理器。我們選擇基準 在其他文件中描述和 否則出版,二 多線程應用程序,其包括 基準(BEMengine(從Larson和克里希南 [22]和從 MicroQuill公司的shbench基準[26]拉爾森 基準) [7]和 巴恩斯小屋[1,2]),並寫了一些我們自己的微基準 強調存儲器分配的 不同方面 性能(threadtest,活性假, 被動假)。
這篇論文有些陳舊。不過,我最近看到了HP-UX的分配器(MallocNextGen),HP也無法確保它適用於所有可能的應用程序。它說:
新的分配器一般是 預計將提高應用程序的性能 。但是,某些應用程序的性能可能會降低,因此可能會有一些應用程序。因此,用戶 在生產 環境中使用 新分配器之前建議衡量他們 應用程序使用默認的內存分配器 libc中,並與 分配器在libmallocng。
至於速度和併發性我自己的經驗是,你必須測量你自己的程序的性能,以比較兩個不同的分配器。如果我們談論Linux,您可以使用LD_PRELOAD來加載不同的分配器。
+1。是的,如果沒有標準的基準,那麼我們應該從哪個角度來理解和解釋結果呢? – Viet 2010-04-01 14:22:57
據我瞭解,一個想法是衡量自己的應用程序性能。另一方面,您可以選擇一組真正的程序和自己的測試來比較分配器。 – 2010-04-01 14:26:15
幾年前,我自己測試了幾個分配器,我的經驗是結果都取決於測試類型。如果你想自己寫一些基準,考慮以下情況:
- 分配大量的單一大小的內存,然後釋放它所有
- 分配許多不同大小的內存,然後釋放它所有
- 只分配幾塊內存,釋放它們,然後重複這個循環幾次(對相同大小的塊和不同大小的塊重複)
- 分配大量不同大小的內存,空閒一半(例如,偶數分配),然後在循環中分配並釋放內存
- 使用兩個線程並行
- 使用分配內存三,四,五,...線程並行
分配內存,你會發現,其結果將是每個測試不同。在一種情況下非常好的分配器在其他情況下可能不好。
實際上這意味着最好在您的應用程序中以真實/現實的情況進行測試。
+1聽起來不錯Patrick。 – Viet 2010-04-01 14:23:36
- 1. 可用於C的基準測試庫#
- 2. 用於測試性能的C++單元測試(合成基準測試)
- 3. RAM性能基準測試 - UWP和C#
- 4. 基準測試/測試fastclick.js
- 5. 基準測試/分析JavaScript
- 6. C11/C++ 11弱內存基準測試
- 7. Siege基準測試
- 8. 基準測試NetBeans
- 9. Netlogo基準測試
- 10. iOS應用基準測試
- 11. libtomcrypt用法基準測試
- 12. Memcached的UDP基準測試
- 13. Apache Geode的基準測試
- 14. Windows下的基準測試
- 15. C.通過交換和分類測試的TDD測試?
- 16. 分佈式HTTP基準測試工具?
- 17. Android和windows的基準測試(32位)
- 18. Python中的基準測試和監控
- 19. 基於Visual Studio和的NuGet測試運行器/適配器
- 20. ESB解決方案測試性能和基準測試
- 21. Openssl速度基準測試
- 22. Visual Studio PC基準測試
- 23. 基準測試AWS Cloudfront
- 24. 基準測試fortran循環
- 25. Google基準測試主要
- 26. Oracle 11g基準測試
- 27. 基準測試:BSON vs JSON
- 28. 高速Javascript基準測試
- 29. 基準測試工具
- 30. funkload基準測試失敗
你想測試什麼方面,速度,碎片等? – 2010-04-01 12:01:40
我根據你的建議編輯過。謝謝。 – Viet 2010-04-01 12:04:33