gpt4 book ai didi

r - 嵌套函数是否更慢?

转载 作者:行者123 更新时间:2023-12-05 01:03:35 27 4
gpt4 key购买 nike

定义由父函数内部的父函数调用的子函数(作为嵌套函数)是否更慢?

例如假设解决方案1:

Foo <- function(x) {

Baz <- function(y) {
#... do something
}
#... do something and call Baz, for instance
sapply(x, Baz)
}

或者解决方案2:
Baz <- function(y) {
#... do something
}

Foo <- function(x) {

#... do something and call Baz, for instance
sapply(x, Baz)
}

在解决方案 1 中有一个额外的过程来定义 Baz运行时 Foo ,所以我猜很多人都打了 Foo在解决方案 1 中会稍微慢一些。这是真的吗?

最佳答案

如果不查看特定功能和输入数据,很难预测速度/效率。加速一种类型的过程可能不一定对另一种有好处。你可以尝试一个简单的基准测试

m1<- function() {
x<-rep(runif(100))
Baz <- function(y) {
mean(y)
}
sapply(x, Baz)
}

Baz <- function(y) {
mean(y)
}
m2 <- function() {
x<-rep(runif(100))
sapply(x, Baz)
}

library(microbenchmark)
microbenchmark(m1(), m2())

在这里,当我运行它很多次。然后看起来很有可比性。如果您想加快代码速度,这不太可能是您放慢速度的地方。但最好还是测试“真实世界”的场景以确保安全。

当你创建闭包时,嵌套函数的重要性就体现出来了。子函数可以访问父函数的环境。这可能是一个非常强大的工具。

关于r - 嵌套函数是否更慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24521414/

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