gpt4 book ai didi

c++ - 如何评估自定义内存分配器的质量?

转载 作者:搜寻专家 更新时间:2023-10-30 23:59:32 25 4
gpt4 key购买 nike

评估内存分配时应检查哪些特征?

分配和取消分配的性能?简单的压力测试就足够了吗?如何检查分配质量?

例如,我找到了 Oracle 对 malloc 的测试,但这只是 Oracle 对问题的看法。并且本次测试只针对多线程性能。

人们通常如何检查他们的分配器?

最佳答案

只是为了更多地关注“如何”,而不是“什么”,其他答案似乎都在处理。以下是我的做法。

第一步 - 使比较方法成为可能

确定您看重的品质。列出 list ,确定优先级,最后制定值(value)函数。

也就是说,找出在您的观点/案例中哪些测量是最有用的质量指标。一些好的衡量指标可能是分配内存块的平均时间、应用程序的总运行时间(如果适用)、平均帧速率、总内存消耗或平均内存消耗……这一切都取决于您希望实现的目标。

然后,创建一个函数,根据测试运行的这些测量值,为您提供一个可用作质量测量值的值。最简单的情况是简单地为每个测量确定一个权重因子。这些权重因子应该体现每个测量的重要性,如果它们使用不同的单位(例如平均分配时间的纳秒和平均内存消耗的字节),请尝试缩放它们以进行公平比较。

第二步 - 设置测试场景

这应该尽可能接近现实案例。最好的就是您要使用内存分配器的实际代码,以及用于进行计算值(value)函数所需的所有测量的添加代码。

第三步 - 测试

编写一堆不同的分配器并相互测试它们,以及默认或没有任何分配器(如果适用)。测量所有结果,计算每个结果的值(value)函数,并根据结果对它们进行排名。请记住执行性能测量时始终需要考虑的所有不同注意事项。

第四步 - 评估和重新迭代

看看不同的解决方案如何相互叠加。应用一些批判性思维。这些结果是否真的与您在测试期间体验每个分配器的质量相符?如果结果与您认为看到的不符。

例如,如果看起来速度非常快并且总运行时间比其他人少半分钟的人得到了平庸的分数。嗯,那么是时候仔细检查你的方法了。也许你的测量有问题?或者您可能需要重新评估您选择的值(value)函数...重复第一步到第四步,直到结果清晰并且看起来与您测试它们的实际经验一致。

关于c++ - 如何评估自定义内存分配器的质量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16099646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com