- 积分
- 11549
- 明经币
- 个
- 注册时间
- 2015-8-18
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
本帖最后由 你有种再说一遍 于 2024-12-22 18:13 编辑
我之前没有发过哈希网格的代码,
主要是没人帮我验证,还是敲出来避免我忘记,
毕竟不能跑和我不能忘记是两码事,
通常不能跑的我都加密起来了...
https://www.cnblogs.com/JJBox/p/18617954
密码是mjtd
主要设计是稀疏矩阵,惰性扩容,并行查询.
数据并行 or 任务并行.
发现要转为并行,思维真的都不一样了,
要考虑怎么切割数据,而不是怎么有序...
重构标注链式选择中...
发现居然需要这个哈希网格才能进行并行查询.
然后发现我没有敲...
是为数不多串行加入容器,
然后任务并行查询,再进行并归的例子了,
尽可能并行成为如今数据处理的技巧.
哈希网格本质上就是桶排序算法的扩展...
它的原理就是把数据串行加入不同的分块中,
会依据特殊hash进行,中点/分格.
虽然同一条链条的标注可能被切割到不同的分块,
但是求碰撞的耗时是巨大的,
重点的每个块的任务并行(其实不并行也会加速),
最后会以田字收敛和聚合结果.
通过分治法使得分块之间的数据规模不相互影响,
什么意思?举个例子:
如果有一个任务是排序,不需要全部比较一次,
而是分块内比较,就使得规模减少了,时间就自然降低很多.
嘻嘻.
不过我貌似一个不小心把链式选择写得超长,
然后做错了一个设计,
把同角度作为key,
然后发现同角度里面0和90是占比最多的,
大量聚集在同一个key上面,这样就是无效字典了.
还是得区分出链条之后把链条的minX作为key.
https://www.cnblogs.com/JJBox/p/18611423
放一个预览版,说不定过不久我就改了.
SortedDictionary怎么找最近? |
|