gpt4 book ai didi

f# - 嵌套函数性能 (F#)

转载 作者:行者123 更新时间:2023-12-04 16:28:43 24 4
gpt4 key购买 nike

F# 中的嵌套函数是否存在任何性能问题?

如果我有一个在数组中的每个项目上调用的函数,并且该函数具有嵌套的内部函数,这是否意味着它需要在每次迭代中声明、创建和分配所有内部嵌套函数?

看起来效率非常低,但我真的很喜欢嵌套函数的可读性,而不是私有(private)外部函数。

最佳答案

嵌套函数被编译器提取到继承自 FSharpFunc 的类中。 ,嵌套在定义其父函数的模块或类型中。因此,编译器本质上为您完成了您在外部私有(private)函数中手动执行的操作。

在运行时发生的所有事情都是这些对象的实例化。与执行内联代码相比,它需要付出一定的代价,但我想这远远低于您在心智模型中的预期。

不过,它确实给你留下了一个额外的 GC 对象。那么这个对象实例化在一个紧密的循环中会很重要吗?在一个简单的实现中,函数对象在每次迭代中都被重新实例化,也许是的。但是 F# 编译器比这更聪明,它通常在循环外实例化循环体中使用的函数一次。同样,成本可能尽可能低。

如有严重疑问,请咨询 ILSpy和基准。根据经验 - 不要担心它,只需使用嵌套函数。

关于f# - 嵌套函数性能 (F#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41312731/

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