r - 在 R 中,增加一个列表和增加一个向量一样低效吗?
问题描述
some_list <- list()
for (i in 1:1000) {
some_list[[i]] <- i
}
我想知道如果 some_list 是一个向量,这是否同样低效。
解决方案
答案似乎是“是”。您可以对其进行基准测试。
f = function() {
some_list <- list()
for (i in 1:100000)
some_list[[i]] <- i
}
g = function() {
some_vector <- c()
for (i in 1:100000)
some_vector[i] <- i
}
h = function() {
some_list <- vector("list", 100000)
for (i in 1:100000)
some_list[[i]] <- i
}
k = function() {
some_vector <- integer(100000)
for (i in 1:100000)
some_vector[i] <- i
}
microbenchmark::microbenchmark(f(), g(), h(), k(), times = 10)
Unit: milliseconds
expr min lq mean median uq max neval
f() 27.723670 28.058052 31.043727 28.812197 33.973669 38.58484 10
g() 20.699626 21.235849 23.029765 21.531695 26.419720 28.04681 10
h() 7.056399 7.151585 7.887856 7.356198 7.936945 10.80190 10
k() 6.025570 6.076456 7.194970 6.408183 7.808957 11.00644 10
推荐阅读
- python-2.7 - 在 web2py 中使用 python 从 textarea 发送消息到确定的电子邮件地址
- java - 为什么我的 showMessageDialog 显示两次?
- c - windows - plain shared memory between 2 processes (no file mapping, no pipe, no other extra)
- java - 通用类 toString 操作
- python - WiringPi ODROID C2 Python 读取模拟输入
- bash - 展开执行另一个别名的别名(嵌套别名)
- jakarta-ee - Websocket 连接建立错误:net::ERR_CONNECTION_REFUSED 'wss://'
- python - Flask-SQlAlchemy Query 在生产和开发配置之间不一致
- vba - 使用 VBA 搜索范围并将行的值返回给用户表单
- perl - 如何使用散列在 perl 中将文件中的名称更改为另一个名称?