【发布时间】:2025-11-30 06:45:01
【问题描述】:
我正在使用 R 编程语言。我正在学习计算中不同类型的“时间”。一般时间似乎有两种类型:与您正在运行的程序的一般数学复杂性相对应的时间,以及与您的个人计算机运行程序所需的时间相对应的时间。
我在这里遇到了 R 中的 Sys.time() 命令:https://www.r-bloggers.com/2017/05/5-ways-to-measure-running-time-of-r-code/
Sys.time() 是否测量您的个人计算机运行命令所需的时间?例如,我使用 Sys.time() 编写了下面的代码来测量我的个人计算机在 R 中针对不同数量的观察运行以下过程所花费的时间。
library(Rtsne)
library(cluster)
library(ggplot2)
library(dplyr)
library(dbscan)
library(plotly)
#generate data
var_1 <- rnorm(1000,1,4)
var_2<-rnorm(1000,10,5)
var_3 <- sample( LETTERS[1:4], 1000, replace=TRUE, prob=c(0.1, 0.2, 0.65, 0.05) )
response_variable <- sample( LETTERS[1:2], 100, replace=TRUE, prob=c(0.4, 0.6) )
#put them into a data frame called "f"
f <- data.frame(var_1, var_2, var_3, response_variable)
#declare var_3 and response_variable as factors
f$response_variable = as.factor(f$response_variable)
f$var_3 = as.factor(f$var_3)
#create id
f$ID <- seq_along(f[,1])
mseDF <- NULL
for (size in c(100,500,1000)) {
start_time <- Sys.time()
#gower distance
gower_dist <- daisy(f[1:size, 1:4],
metric = "gower")
lof <- lof(gower_dist, k=3)
tsne_obj <- Rtsne(gower_dist, is_distance = TRUE)
tsne_data <- tsne_obj$Y %>%
data.frame() %>%
setNames(c("X", "Y")) %>%
mutate(
name = f[1:size,]$ID,
lof=lof,
var1=f[1:size,]$var_1,
var2=f[1:size,]$var_2,
var3=f[1:size,]$var_3
)
p1 <- ggplot(aes(x = X, y = Y, size=lof, key=name, var1=var1,
var2=var2, var3=var3), data = tsne_data) +
geom_point(shape=1, col="red")+
theme_minimal()
ggplotly(p1, tooltip = c("lof", "name", "var1", "var2", "var3"))
end_time <- Sys.time()
(final = end_time - start_time)
print (final)
mseDF <- rbind(mseDF, data.frame(size, final))
}
这是正确的吗?
额外:可视化运行时间:
plot(mseDF)
lines(mseDF)
谢谢
【问题讨论】: