translation.backendopt.mallocs¶
- 名称: mallocs
- 描述: 删除 mallocs
- 命令行: –translation-backendopt-mallocs
- 命令行否定: –no-translation-backendopt-mallocs
- 选项类型: 布尔选项
- 默认值: True
此优化启用“malloc 删除”,它将“展开”在分配它们的函数中不会逃逸的结构的分配,变成一个或多个额外的局部变量。
举个例子。考虑这段看似不太可能的代码
class C:
pass
def f(y):
c = C()
c.x = y
return c.x
Malloc 删除会发现 C
对象永远不会离开 f
,并将上面的代码替换为类似这样的代码
def f(y):
_c__x = y
return _c__x
代码很少直接以允许此优化发挥作用的方式编写,但内联通常会导致使用它的机会(实际上,这是 PyPy 进行自己的内联而不是依赖 C 编译器的主要原因之一)。
有关此优化和其他优化的更多信息,您可以阅读“大规模并行和翻译方面”技术报告的第 4.1 节,您可以在 技术报告页面 上找到。