r - 了解 R Console 与 Sweave 中函数的反直觉运行时间
问题描述
我正在阅读我在网上找到的关于编写高效 R 代码的教程。我努力看到相同的结果——f1 应该比 f2 快——但我看到的是相反的结果。
我尝试在控制台和 RSweave 环境中运行代码,得到了不同的解决方案。当然,每次运行的时间都不同,但通常 f1 在控制台中的运行时间比 f2 低,但在 RSweave 中则相反——我只是将代码复制到一个 RSweave 块中。
f1 <- function(x){
return(log((sqrt(x*10^3))))
}
f2 <- function(x){
a<- x*10^3
b<- sqrt(a)
c<- log(b)
return(c)
}
start_time <- Sys.time()
for(i in 1:1000){
f1(1)
}
end_time <- Sys.time()
(runtime <-end_time - start_time)
R Console: Time difference of 0.065943 secs
RSweave: Time difference of 0.05585098 secs
start_time <- Sys.time()
for(i in 1:1000){
f2(1)
}
end_time <- Sys.time()
(runtime2 <-end_time - start_time)
Console: Time difference of 0.1935871 secs
RSweave: Time difference of 0.05243397 secs
RSweave 是否会做一些不同的事情来产生这种奇怪的行为?
解决方案
推荐阅读
- spring-boot - 为什么大摇大摆地忽略我的身份验证?
- reactjs - 类型错误:_SchoolProduct__WEBPACK_IMPORTED_MODULE_2___default.a.map 不是函数
- php - 尝试通过 PHP 创建动态标题
- c++ - Dokanfuse:如何使用Dokan的Fuse wrapper将一个简单的Fuse文件系统应用导入windows
- jquery - 从 Rails 控制器返回 Font Awesome 图标
- excel - UsedRange - 无法消除尾随空白行
- php - 如何修复移动版上未覆盖整个页面的 bg 图片?
- redirect - HSTS 重定向将 Origin 设置为“null”
- javascript - 哪个哈希函数更适合在小哈希表中表示 128 位随机 id
- sql - 前一天的期末余额作为今天的期初余额