优化内存中DataTable搜索速度,IP区域汇总
生活随笔
收集整理的这篇文章主要介绍了
优化内存中DataTable搜索速度,IP区域汇总
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
前段时间遇到一个IP的问题,IP库有大约50w的数据,每天登陆网页的人数大约有5000,想做出一个柱状图,显示这5000人的城市分布情况,肯定不能将这5000人去读取5000次数据库,那么只能将这个IP库50w的数据放在程序的内存中,但是不做优化,直接去50w数据中筛选,无疑消耗是可怕的,经过几日测试,现将一个比较好的解决方案提供:
①:查询时候排序,然后根据二分法去读取内存中的(非数据库的)数据集
②:将数据集放在一个哈希表中,加速单个的查询速度
③:有人说可以再sql中写自定义函数处理,这个本人没尝试过,其他人有好的方案也可以提供
读取出来放大哈希表的代码就不贴了,仅贴上二分法的吧,仅供参考:
①:二分法处理这个数据集
static int Dichotomy(Dictionary<int, Int64[]> arr, Int64 v){int low = 0;int high = arr.Count - 1;int mid;while (low <= high){if (low == high){return low;}mid = (low + high) / 2;if (v < arr[mid][0])//查询的值小于中值,查询区间就是low到新的上限 {high = mid - 1;//上限的索引值 }else if (v > arr[mid][0])//查询的值大于中值,查询区间就是新的下限到high {low = mid + 1;//下限的索引值 }else{return mid;}}return high;}
以上纯属个人观点,转载请注明出处
转载于:https://www.cnblogs.com/AK2012/archive/2012/10/24/2012-1024.html
总结
以上是生活随笔为你收集整理的优化内存中DataTable搜索速度,IP区域汇总的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: M产品研发日志(4)---项目出差
- 下一篇: 已经使用过的rails插件