Vie*_*iet 8 c c++ memory benchmarking memory-management
请建议用于测试C和C++分配器的基准测试?满足以下任何方面的基准被认为:
谢谢!
几年前我自己测试了几个分配器,我的经验是结果都取决于测试类型.如果您想自己编写一些基准测试,请考虑以下情况:
您会注意到每次测试的结果都不同.在一种情况下非常好的分配器在其他情况下可能是坏的.
在实践中,这意味着最好在您的应用程序中,在实时/现实情况下对其进行测试.
小智 4
如果您询问 C/C++ 程序的通用分配器,那么我找到了这篇论文Hoard:用于多线程应用程序的可扩展内存分配器,它考虑了这个问题。这是该文档的引用
目前还没有用于评估多线程分配器的标准基准套件。据我们所知,没有任何基准测试专门强调服务器应用程序(例如 Web 服务器 1 和数据库管理器)的多线程性能。我们选择了其他论文中描述的和以其他方式发布的基准(Larson 和 Krishnan [22] 的 Larson 基准以及 MicroQuill, Inc. [26] 的 shbench 基准),两个多线程应用程序,其中包括基准(BEMengine [7] 和 barnes-hut) [1, 2]),并编写了一些我们自己的微基准测试来强调内存分配性能的不同方面(线程测试、主动错误、被动错误)。
这张纸有点旧了。然而,我最近看到了 HP-UX 的分配器(MallocNextGen),并且 HP 也无法确保它适用于所有可能的应用程序。它说:
人们普遍期望新的分配器能够提高应用程序的性能。但是,某些应用程序的性能可能会下降。因此,建议用户在生产环境中使用新分配器之前,使用 libc 中的默认内存分配器和 libmallocng 中的分配器对其应用程序进行基准测试。
至于速度和并发性,我自己的经验是,您必须测量自己的程序的性能才能比较两个不同的分配器。如果我们谈论 Linux,您可以使用 LD_PRELOAD 来加载不同的分配器。
归档时间: |
|
查看次数: |
3114 次 |
最近记录: |