gpt4 book ai didi

Python 等价于内联函数或宏

转载 作者:IT老高 更新时间:2023-10-28 20:36:45 26 4
gpt4 key购买 nike

我才意识到这样做

x.real*x.real+x.imag*x.imag

比做快三倍

abs(x)**2

其中 x 是一个 numpy 复数数组。为了代码的可读性,我可以定义一个函数,如

def abs2(x):
return x.real*x.real+x.imag*x.imag

这仍然比 abs(x)**2 快得多,但它是以函数调用为代价的。是否可以像我在 C 中使用宏或使用 inline 关键字那样内联这样的函数?

最佳答案

Is it possible to inline such a function, as I would do in C using macro or using inline keyword?

没有。在到达这个特定指令之前,Python 解释器甚至不知道是否有这样的函数,更不用说它的作用了。

如评论中所述,PyPy 将自动内联(以上仍然成立 - 它“简单地”在运行时生成优化版本,从中受益,但在它失效时会中断),尽管在这种特定情况下,在 PyPy 上实现 NumPy 只是不久前才开始的,并且直到今天还不是 beta 级别。但底线是:不要担心 Python 中这一级别的优化。实现自己优化或不优化,这不是您的责任。

关于Python 等价于内联函数或宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6442050/

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