【发布时间】:2011-01-30 06:52:24
【问题描述】:
有人想过如何编写一个完全无分支的内存管理器(在 C++ 中)吗?我已经编写了一个池、一个堆栈、一个队列和一个链表(从池中分配),但我想知道编写一个无分支的通用内存管理器有多合理。
这一切都是为了帮助创建一个真正可重用的框架,以进行可靠的并发、按顺序 CPU 和缓存友好的开发。
编辑:无分支是指不进行直接或间接函数调用,也不使用 ifs。我一直在想,我可能可以实现一些东西,首先将请求的大小更改为零以进行错误调用,但实际上并没有更多。 我觉得这不是不可能的,但是这个练习的另一个方面是在所说的“不友好”处理器上对其进行分析,看看是否值得像这样努力避免分支。
【问题讨论】:
-
“分支”是什么意思?
-
@Neil,我想,这是拆分控制流的东西(例如
if运算符)。 -
如果分支表示
if,那么答案是否定的。 @OP:您能否澄清一下这是否确实是您的意思? -
这将是一个越界的答案,所以我仅将其添加为评论。您可能需要考虑使用尽可能少的分支实现并添加依赖于编译器/平台的代码来帮助分支预测器。
-
无分支 C++ 代码不一定会转换为无分支程序集。此外,分支 C++ 代码不一定转换为分支程序集。所以如果目标是对几乎不能处理分支的 CPU 非常友好,那么无分支 C++ 可能不是正确的工具。
标签: c++ concurrency containers data-oriented-design