通常,如果两个for循环的迭代次数相同,那么运行两个for循环或将两个for循环组合成一个for循环会更快吗?
我本以为运行一个for循环应该更快,但是当我写一些测试代码时,情况并非如此。任何人都可以解释为什么会这样吗?
以下是R
tic <- function(gcFirst = TRUE, type=c("elapsed", "user.self", "sys.self"))
{
type <- match.arg(type)
assign(".type", type, envir=baseenv())
if(gcFirst) gc(FALSE)
tic <- proc.time()[type]
assign(".tic", tic, envir=baseenv())
invisible(tic)
}
toc <- function()
{
type <- get(".type", envir=baseenv())
toc <- proc.time()[type]
tic <- get(".tic", envir=baseenv())
print(toc - tic)
invisible(toc)
}
> tic()
> for(i in 1:10000){
+ x = rnorm(1000)
+ y = rnorm(1000)
+ }
> toc()
elapsed
1.78
>
>
> tic()
> for(i in 1:10000){
+ x = rnorm(1000)
+ }
> for(i in 1:10000){
+ y = rnorm(1000)
+ }
> toc()
elapsed
1.78
正如你所看到的那样,它需要一个for循环1.78秒,它也需要2个for循环1.78秒。
答案 0 :(得分:0)
在两个循环示例中,第二个循环仅运行到1000.这可能是造成差异的原因。在一般情况下,回答很复杂,因为它取决于位置,缓存大小以及您正在进行哪些操作可以进行流水线操作。差异通常可以忽略不计,仅与性能关键应用相关。您应该优先考虑代码的清晰度。