新闻  |   论坛  |   博客  |   在线研讨会
SAGEMCOM 252720938AB 调用纯函数时使用的参数
15359029662 | 2023-03-20 18:46:27    阅读:47   发布文章

SAGEMCOM 252720938AB 调用纯函数时使用的参数

SAGEMCOM 252720938AB 调用纯函数时使用的参数

纯函数(或表情)没有副作用(内存或I/O)。这意味着纯函数有几个有用的属性,其中许多可以用来优化代码:

  • 如果不使用纯表达式的结果,可以在不影响其他表达式的情况下将其删除。

  • 如果调用纯函数时使用的参数不会产生副作用,那么结果相对于该参数列表是恒定的(有时被调用对透明性有关的或者幂等性),即使用相同的参数再次调用pure函数会返回相同的结果。(这可以实现缓存优化,例如记忆化。)

  • 如果两个纯表达式之间没有数据依赖关系,它们的顺序可以颠倒,或者可以在平行的而且它们不能互相干扰(换句话说,任何纯粹表达式的评价都是线程安全的).

  • 如果整个语言不允许副作用,那么可以使用任何评估策略;这给了编译器重新排序或组合程序中表达式求值的自由(例如,使用森林开伐).

虽然命令式编程语言的大多数编译器检测纯函数,并对纯函数调用执行公共子表达式消除,但对于预编译的库,它们并不总是这样做,因为预编译的库通常不公开这些信息,从而阻止了涉及那些外部函数的优化。一些编译器,如(同groundcontrolcenter)地面控制中心,为程序员添加额外的关键字,以显式地将外部函数标记为纯函数,从而实现这样的优化。Fortran 95还允许指定函数纯的[58]添加了C++11constexpr语义相似的关键字


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客