algorithm - 计算尺寸等级
问题描述
高性能 malloc 实现通常会实现分离的空闲列表,也就是说,每个更常见(较小)的大小都有自己单独的空闲列表。
对此的第一次尝试可以说,低于某个阈值,大小等级只是大小除以 8,四舍五入。但是实际的实现有更多的细微差别,将识别的大小类排列在指数曲线上(但比每一步简单地加倍更温和),例如http://jemalloc.net/jemalloc.3.html
我试图弄清楚如何在一些这样的曲线上将尺寸转换为尺寸等级。现在,原则上这并不难;有几种方法可以做到这一点。但是要达到加速普通案例的预期目标,它确实需要快速,最好只有几条指令。
进行这种转换的最快方法是什么?
解决方案
在黑暗时代,当我曾经担心这些事情时,我只是从最小的开始迭代所有可能的尺寸。
这实际上很有意义,因为分配内存强烈意味着实际分配之外的工作——比如初始化和使用该内存——这与分配大小成正比。除了最小的分配之外,在所有分配中,这种开销将淹没您选择大小等级所花费的任何费用。
只有小的真正需要快速。
推荐阅读
- r - Lubridate 在 R 中将日期放在未来
- python - 删除熊猫字符串类型系列中所有不是数字的字符
- r - 仅将 as.numeric 映射到数据框的特定列
- python - Pandas: How create columns where sum other columns based on conditional of other column values?
- ruby-on-rails - How to compre DateTime with generic times in ruby
- react-native - 如何使用 Parse-Server 后端修复 React Native 上的“错误:XMLHttpRequest 失败”
- survey - 在 Qualtrics 中,如何在给出响应之前隐藏滑块不显示?
- node.js - how to general search from [array] of string
- javascript - How to change link Navbar color while scrolling in React or Gatsby?
- vue.js - Vue 测试观察者更改但内部代码没有响应