В вашем примере u
- это класс POSIXlt
, а v
- это класс POSIXct
. Если вы конвертируете u
в POSIXct
, время будет очень похожим.
POSIXlt
объекты менее эффективны, поскольку они хранятся в виде списка векторов, тогда как POSIXct
объекты хранятся в виде одного числового вектора.
> u <- as.POSIXct(u)
> u.posix.time.small<-system.time(successor(u[1:1000]))
> u.char.time.small<-system.time(successor(as.character(u[1:1000])))
> u.posix.time.big<-system.time(successor(u[1:20000]))
> u.char.time.big<-system.time(successor(as.character(u[1:20000])))
> rbind(u.posix.time.small,u.posix.time.big,u.char.time.small, u.char.time.big,
+ v.posix.time.small, v.posix.time.big, v.char.time.small,v.char.time.big)[,1:3]
user.self sys.self elapsed
u.posix.time.small 0.04 0.00 0.04
u.posix.time.big 1.91 0.01 1.92
u.char.time.small 0.01 0.00 0.02
u.char.time.big 0.29 0.02 0.32
v.posix.time.small 0.05 0.00 0.04
v.posix.time.big 1.43 0.00 1.44
v.char.time.small 0.02 0.00 0.01
v.char.time.big 0.32 0.00 0.32