欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

优化内存中DataTable搜索速度,IP区域汇总

发布时间:2025/6/17 编程问答 52 豆豆
生活随笔 收集整理的这篇文章主要介绍了 优化内存中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;}


      以上纯属个人观点,转载请注明出处

                                   --------------AK:2012-10-24

 

 

转载于:https://www.cnblogs.com/AK2012/archive/2012/10/24/2012-1024.html

总结

以上是生活随笔为你收集整理的优化内存中DataTable搜索速度,IP区域汇总的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。