我试图对字符串向量进行排序,请参阅下面的MWE
# example R code
N=1e8; K=100
set.seed(1)
id3 = sample(sprintf("i%07d",1:(N/K)), N, TRUE)
pt = proc.time()
sort(id3)
data.table::timetaken(pt)
它在我的电脑上完成了近5分钟,所以我取消了它。
我注意到在Julia中,我的笔记本电脑上可以在大约90秒内执行相同的操作
# example Julia cde
const M=100_000_000; const K=100
srand(1)
svec1 = rand(["i"*dec(k,7) for k in 1:M÷K], M)
@time sort(svec1)
答案 0 :(得分:6)
只需使用method = "radix"
来使用基数排序来加速排序
N=1e8; K=100
set.seed(1)
id3 = sample(sprintf("i%07d",1:(N/K)), N, TRUE)
pt = proc.time()
sort(id3, method="radix")
data.table::timetaken(pt)
它在我的笔记本电脑上完成了18秒。