In R, there are multiple ways to measure the running time of your R Code.
Method 1: Using the Sys.time()
function
To measure the execution time of R code, we can use the Sys.time function. Put it before and after the code and take difference of it to get the execution time of code.
start.time <- Sys.time() # Your R code here result <- sum(1:10000) end.time <- Sys.time() time.taken <- round(end.time - start.time,2) time.taken
Result : Time difference of 1.12 secs
Method 2: Using the microbenchmark
package
The microbenchmark package allows you to accurately measure the execution time of small code snippets, especially when you need to compare different approaches or functions. You can install the package by using command install.packages("microbenchmark")
Let's take a simple example to measure the running time of two different approaches for calculating the sum of numbers from 1 to N.
Approach 1: Using a loop
Approach 2: Using the sum() function.
# Load the microbenchmark package library(microbenchmark) # Function to calculate the sum of numbers from 1 to N using a loop sum_using_loop <- function(N) { result <- 0 for (i in 1:N) { result <- result + i } return(result) } # Function to calculate the sum of numbers from 1 to N using the sum() function sum_using_sum <- function(N) { return(sum(1:N)) } # Measure the running time using microbenchmark result <- microbenchmark( sum_using_loop(10000), sum_using_sum(10000), times = 100 ) print(result)
The times parameter sets how many times each function is executed to get a more accurate measurement of the execution time.
See the output below. sum_using_sum() function is significantly faster than the sum_using_loop() function.
expr min lq mean median uq max neval sum_using_loop(10000) 522.0 566.15 630.333 571.0 600.9 5881.4 100 sum_using_sum(10000) 1.3 1.40 36.513 1.5 1.6 3399.9 100
Method 3: Using the rbenchmark
package
The rbenchmark package is another option for benchmarking your R code. It's useful when you want to compare the performance of different functions or versions of your code. You can install the package by using command install.packages("rbenchmark")
# Load the rbenchmark package library(rbenchmark) # Function to calculate the sum of numbers from 1 to N using a loop sum_using_loop <- function(N) { result <- 0 for (i in 1:N) { result <- result + i } return(result) } # Function to calculate the sum of numbers from 1 to N using the sum() function sum_using_sum <- function(N) { return(sum(1:N)) } # Measure the running time using benchmark result <- benchmark( sum_using_loop(10000), sum_using_sum(10000), replications = 100 ) print(result)
The replications parameter inside the functions determines how many times each function is executed during the benchmarking process.
Output:test replications elapsed relative user.self sys.self 1 sum_using_loop(10000) 100 0.06 6 0.05 0 2 sum_using_sum(10000) 100 0.01 1 0.01 0
I have a doubt. I'm writing R code as a function statement. for example:
ReplyDeletefile_read<- function(input_file){
df = read.csv(input_file)
return(df)
}
I need to measure the complation time with the date. can i use your start.time and end.time within your function, if so, can you please explain?. or any other ways to do that.
Check out this code -
Deletefile_read<- function(input_file){
start.time <- Sys.time()
df = read.csv(input_file)
end.time <- Sys.time()
print(round(end.time - start.time,2))
return(df)
}
mydata = file_read("C:\\Users\\Deepanshu\\Downloads\\dataset.csv")