双层 for 循环构建矩阵,
for i in 0...10000
for j in 0...10000
次数太多导致运行很慢。
试想把矩阵平均分成左上、左下、右上、右下 4 块,每块是一个线程 Thread,这样构建起来是不是时间更短??效率更高??或是 ruby 同一时间内只能运行一个内核线程,总共的构建时间是相同的?
求大神回复。
实际问题是构建共现词矩阵。
部分代码:
for rowindex in 0...keyscount
for colindex in rowindex...keyscount
if keys[rowindex] != keys[colindex] then
matrixnum = 0
for k in 0...doccount
if doc[k].include? keys[rowindex] and doc[k].include? keys[colindex]
rownum = doc[k].scan(keys[rowindex]).count
colnum = doc[k].scan(keys[colindex]).count
matrixnum += (rownum > colnum) ? colnum : rownum
end
end
else
matrixnum = 0
end
matrix[rowindex][colindex] = matrixnum
end
end
因为 keyscount 数目比较大,不知道该怎样去优化了。最后构建的为数值矩阵。