【发布时间】:2012-05-25 15:01:04
【问题描述】:
正如标题所说。为什么 lubridate 函数这么慢?
library(lubridate)
library(microbenchmark)
Dates <- sample(c(dates = format(seq(ISOdate(2010,1,1), by='day', length=365), format='%d-%m-%Y')), 50000, replace = TRUE)
microbenchmark(as.POSIXct(Dates, format = "%d-%b-%Y %H:%M:%S", tz = "GMT"), times = 100)
microbenchmark(dmy(Dates, tz ="GMT"), times = 100)
Unit: milliseconds
expr min lq median uq max
1 as.POSIXct(Dates, format = "%d-%b-%Y %H:%M:%S", tz = "GMT") 103.1902 104.3247 108.675 109.2632 149.871
2 dmy(Dates, tz = "GMT") 184.4871 194.1504 197.8422 214.3771 268.4911
【问题讨论】:
-
我会让有更多经验的人加入,但我的猜测是 lubridate 函数旨在处理“幕后”的许多事情,这意味着它对输入进行更多检查/审查尝试给你合理的结果。阅读background docs 与这些情绪相呼应。这是否会导致缓慢,我不确定……但这是我的猜测。同样,
plyr系列也是为了方便而编写的,在某些情况下,与基本函数相比,它的性能可能相对较差……但它很容易使用! -
@RJ- 如果您的问题中有显示差异的实际代码会更好。
system.time可以用来测量。 -
注明。很快就会发布。
-
你只需要使用一个特定的函数而不是通用的。