如果行数较少,则R代码更快

pk_*_*_22 1 performance r

我对R代码有疑问.如果你在几行代码上写一个语句,当它也可以在一行中完成时,代码会更快吗?那么,较小的线条意味着更快的执行?

例:

fileName = paste(directory, "fileTest.csv", sep="")
vars = read.csv(fileName, header=F)
vars = as.matrix(vars)
Run Code Online (Sandbox Code Playgroud)

要么

vars = as.matrix(read.csv(paste(directory, "fileTest.csv", sep=""), header=F))
Run Code Online (Sandbox Code Playgroud)

我可以想象只有一次没关系,但如果你的代码中发生了很多这种情况?

rmf*_*rmf 8

让我们比较三个函数:一个有3行的函数,一个带一行的函数和一个使用管道的函数.

library(microbenchmark)
library(dplyr)
library(ggplot2)

directory <- getwd()
mat <- matrix(rnorm(n=20000),nrow=200)
write.table(mat,"matrix.txt",sep="\t")

# 3-line code
fn1 <- function()
{
  fileName = paste0(directory,"/matrix.txt")
  vars = read.delim(fileName,header=T)
  as.matrix(vars)
}

# 1-line code
fn2 <- function()
{
  as.matrix(read.delim(paste0(directory,"/matrix.txt"),header=T))
}

# using pipe
fn3 <- function()
{
  paste0(directory,"/matrix.txt") %>%
          read.delim(.,header=T) %>%
          as.matrix()
}
Run Code Online (Sandbox Code Playgroud)

现在,运行每个函数1000次并测量运行时间.绘制结果.

mb <- microbenchmark::microbenchmark(fn1(),fn2(),fn3(),times=1000)
ggplot2::autoplot(mb)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我不认为速度上的差异是显着的.但是还有其他因素(如评论中所述),比如通过创建中间变量使用多少内存,代码可读性等.

在我看来,最好使用额外的线条以提高可读性.这使以后更容易编辑/修改代码.有时,拥有中间变量可能有助于调试.如果你有很多事情要做,那么删除不再需要的变量可能是个好主意.