gpt4 book ai didi

c - malloc CPU 周期

转载 作者:太空狗 更新时间:2023-10-29 16:39:40 29 4
gpt4 key购买 nike

就 CPU 周期而言,malloc() 的成本是多少?(Vista/OS,最新版本的 gcc,最高优化级别,...)

基本上,我正在实现一个复杂的 DAG 结构(类似于链表)由一些 16B(不太常见)和 20B 节点(较常见)组成。

有时,我将不得不删除一些节点,然后再添加一些。但是,与其总是使用 malloc() 和 free(),我可以简单地移动不需要的节点到我的数据结构的末尾,然后更新随着我的算法的继续,字段。如果有免费节点可用,我会更新字段;如果没有,我将不得不分配一个新的。

问题是,我可能只有一个空闲节点可用例如,输入 20 个节点的数据。这意味着:

  • 我将检查可用的空闲节点
  • 检查将成功,并且该空闲节点将得到更新
  • 我将再检查 19 次可用节点
  • 所有检查都会失败,每次都会调用 malloc()

问题:真的值得吗?我应该像往常一样只使用 malloc() 和 free() 吗?或者在列表末尾保留一些可用节点是否值得,并继续检查,即使它通常会失败并导致 malloc() 无论如何?

更具体地说,

malloc() 的 CPU 成本是多少?

最佳答案

它的成本重要吗?真的吗?

真正的答案是“视情况而定”。

这取决于很多事情

  • 当时操作系统还在做什么
  • 碎片化的内存是怎样的
  • 客户端 PC 上内存和处理器的速度
  • 等等

如果此代码对性能非常关键,他们会为您安排时间,并为您的用例制定最佳模式。

如果它不是代码中对性能最关键的部分,只需执行最清晰、最易于实现和维护的代码即可。

“我们应该忘记小效率,大约 97% 的时间:过早优化是万恶之源”,Donald Knuth

关于c - malloc CPU 周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3317537/

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