这次写的彩票的比较算法, 从4000多万个数字去3万多, 然后分别与4000多万取30万,50万个数字比较的算法跑5次耗时40多秒, 感觉效率比较低,于是找了几篇关于海量数据处理的文章,打算看一下有无优化方法。
1. 十个海量数据面试题和十大方法总结:
http://blog.youkuaiyun.com/v_july_v/article/details/6279498
2. 交你如何处理99%的海量数据面试题:
http://blog.youkuaiyun.com/v_july_v/article/details/7382693
3. Bloom Filter一站式教程:
http://blog.youkuaiyun.com/v_july_v/article/details/7382693
关于取n个不同的随机数。 最近在stackoverflow看到有问这个问题,ruby一般方法是:
r = [ ]
while r.length < n
v = rand(max)
r << v unless r.include? v
end
或者
p
(
1
..
max
)
.to_a
.shuffle
[
0
,
n
]
如果考虑到 n 和max都是百万级别, 用哈希速度明显变快:
hash = {} r = [ ]
while hash.length < n
a = rand(max)
if !hash_has_key? (a)
hash(a) = :ok
end
end
r = hash.keys