反正有没有提高这个哈希的初始化速度?目前,我的机器大约需要20分钟.
#prepare hash()
hash <- list();
mappedV <- # matrix with more than 200,000 elements
for( i in 1:nrow(mappedV) ) {
hash[[paste(mappedV[i,], collapse = '.')]] <- 0;
}
Run Code Online (Sandbox Code Playgroud)
在这段代码之前,我使用了一个矩阵,但这花了我超过3个小时.所以我不会抱怨20分钟.如果有更好的选择,我只是好奇.我使用哈希函数来计算200,000种可能组合中的每一种.
PS:并发可能是一种选择.但这并没有改善散列.
您通常会通过预先分配所需长度的列表来节省大量时间,而不是在每次迭代时增加它.
看吧:
X <- vector(mode="list", 1e5)
Y <- list()
system.time(for(i in 1:1e5) X[[i]] <- 0)
# user system elapsed
# 0.3 0.0 0.3
system.time(for(i in 1:1e5) Y[[i]] <- 0)
# user system elapsed
# 48.84 0.05 49.34
identical(X,Y)
# [1] TRUE
Run Code Online (Sandbox Code Playgroud)
因为Y每次添加时都会复制整个列表,所以附加元素随着大小的增加而变得越来越慢.
| 归档时间: |
|
| 查看次数: |
807 次 |
| 最近记录: |