当前位置: 首页 > news >正文

亚马逊网站建设目的汽车用品网站源码

亚马逊网站建设目的,汽车用品网站源码,品牌营销推广代运营,云信网站建设https://blog.csdn.net/penriver/article/details/119736050 https://juejin.cn/post/7179956435806076988 BitMap适合连续密集的正整数存储#xff0c;对于稀疏的正整数存储#xff0c;其性能在很多时候是没办法和int数组相比的#xff0c;尤其是正整数跨度较大的场景对于稀疏的正整数存储其性能在很多时候是没办法和int数组相比的尤其是正整数跨度较大的场景RoaringBitMap就是为了解决这个问题产生。 1 RoaringBitmap 1.1 介绍 RoaringBitmap是高效压缩位图简称RBM 官网介绍Roaring bitmaps are compressed bitmaps. They can be hundreds of times faster. RBM的历史并不长它于2016年由S. Chambi、D. Lemire、O. Kaser等人在论文《Better bitmap performance with Roaring bitmaps》与《Consistently faster and smaller compressed bitmaps with Roaring》中提出. 1.3 存储性能 https://zhuanlan.zhihu.com/p/616558669 1、连续数据 分别向位图中插入1w、10w、100w、1000w条连续数据并且对比BitMap和RoaringBitMap占用空间的大小。比较结果如下表所示 10w数据占用空间 100w数据占用空间 1000w数据占用空间 BitMap 97.7KB 976.6KB 9.5MB RoaringBitMap 16KB 128KB 1.2MB 2、稀疏数据 我们知道位图所占用空间大小只和位图中索引的最大值有关系现在我们向位图中插入1和999w两个偏移量位的元素再次对比BitMap和RoaringBitMap所占用空间大小。 占用空间 BitMap 9.5MB RoaringBitMap 24Byte 1.4 读取性能 Roaring Bitmap压缩算法简介 Roaring Bitmap数据结构是将32位整型INT数划分为高16位和低16位。其中高16位被划分为多个数据块Chunk低16位使用一个容器Container来存放因此每个数据块最多能够存储2^16个整数。Roaring Bitmap将这些容器保存在一个动态数组中按照高16位进行排序可以通过高16位二分查找快速定位对应的容器。根据数据特征使用三种不同的容器进行存储 数组容器Array Container存储稀疏的数据整数较为分散且不连续的情况。若容器里的最大数据小于4096则使用数组容器来存储值。 位图容器Bitmap Container存储稠密的数据有很多连续的整数存在的情况。若容器里的最大数据大于等于4096则使用位图容器来存储值。 运行容器Run Container 存储连续值较多的数据。Run Container只有在其存储空间大小同时小于Array Container和Bitmap Container时才会被使用。 采用这种存储结构Roaring Bitmap极大地提高了数据的压缩率并且可以快速检索一个特定的值。在做位图计算ANDORXOR时Roaring Bitmap提供了相应的算法来高效地实现在三种容器之间的运算。使得Roaring Bitmap无论在存储和计算性能上都变得优秀。 更多关于Roaring Bitmap的介绍信息请参见Roaring Bitmap官方网站。 增删改查的时间复杂度方面BitmapContainer只涉及到位运算且可以根据下标直接寻址显然为O(1)。而ArrayContainer和RunContainer都需要用二分查找在有序数组中定位元素故为O(logN)。 ArrayContainer一直线性增长在达到4096后就完全比不上BitmapContainer了BitmapContainer是一条横线始终占用8kbRunContainer比较奇葩因为和数据的连续性关系太大因此只能画出一个上下限范围。不管数据量多少下限始终是4字节上限在最极端的情况下可以达到128kb。 空间占用即序列化时写出的字节流长度方面BitmapContainer是恒定为8KB的。ArrayContainer的空间占用与基数c有关为(2 2c)BRunContainer的则与它存储的连续序列数r有关为(2 4r)B。 1.5 与bitmap的性能对比 roaringbitmap除了比bitmap占用内存少之外其并集和交集操作的速度也要比bitmap的快原因如下 计算上的优化 对于roaringbitmap本质上是将大块的bitmap分成各个小块其中每个小块在需要存储数据的时候才会存在。所以当进行交集或并集运算的时候roaringbitmap只需要去计算存在的一些块而不需要像bitmap那样对整个大的块进行计算。如果块内非常稀疏那么只需要对这些小整数列表进行集合的 AND、OR 运算这样的话计算量还能继续减轻。这里既不是用空间换时间也没有用时间换空间而是用逻辑的复杂度同时换取了空间和时间。 同时在roaringbitmap中32位长的数据被分割成高 16 位和低 16 位高 16 位表示块偏移低16位表示块内位置单个块可以表达 64k 的位长也就是 8K 字节。这样可以保证单个块都可以全部放入 L1 Cache可以显著提升性能 程序逻辑上的优化 roaringbitmap维护了排好序的一级索引以及有序的arraycontainer当进行交集操作的时候只需要根据一级索引中对应的值来获取需要合并的容器而不需要合并的容器则不需要对其进行操作直接过滤掉。当进行合并的arraycontainer中数据个数相差过大的时候采用基于二分查找的方法对arraycontainer求交集,避免不必要的线性合并花费的时间开销。roaingbitmap在做并集的时候同样根据一级索引只对相同的索引的容器进行合并操作而索引不同的直接添加到新的roaringbitmap上即可不需要遍历容器。roaringbitmap在合并容器的时候会先预测结果生成对应的容器避免不必要的容器转换操作。 1.6 针对long整数的扩展【64-bit integers (long)】 虽然RoaringBitmap是为32位的情况设计的但对64位整数进行了扩展。为此提供了两个类:Roaring64NavigableMap和Roaring64Bitmap。 Roaring64NavigableMap依赖于传统的红黑树。键是32位整数代表元素中最重要的32位而树的值是32位RoaringBitmap。32位RoaringBitmap表示一组元素的最低有效位。 较新的Roaring64Bitmap方法依赖ART数据结构来保存键/值对。键由元素的最重要的48位组成而值是16位的Roaring容器。它的灵感来自 The Adaptive Radix Tree: ARTful Indexing for Main-Memory Databases by Leis et al. (ICDE 13)。
http://www.sczhlp.com/news/251157/

相关文章:

  • 海宁市规划建设局网站做app推广上哪些网站吗
  • 聊城哪里有做网站的电子商务网站规划与...
  • 济宁梵盛科技网站建设设计师用的软件有哪些
  • 静态购物网站模板品牌设计的要求有哪些
  • 西安学校网站制作电子商务主要就业岗位
  • 注册自己的网站dw制作简单网页
  • 网站开通支付宝支付wordpress幻灯片插件怎么用
  • 嘉兴微网站建设wordpress不能安装
  • 2025年11月人造草坪足球场厂家最新推荐,实力品牌深度解析采购无忧之选!
  • 2025 年 11 月人造草坪足球场厂家最新推荐,产能、专利、环保三维数据透视!
  • 2025 年 11 月人造草坪足球场厂家最新推荐,榜单透视与选购要点!
  • 阜新网站建设单位越烽建设集团有限公司网站
  • 国外seo做的好的网站网站建设和编辑实训报告
  • nofollow外链对于网站有提升吗化学试剂购买网站
  • 建设一个个人小说网站室内设计联盟手机版
  • 电子商务网站建设题库及答案商城网站模块
  • asp汽车销售公司网站源码 4s店网站源码 汽车网站建设 完整无建个网站多少费用
  • 网站搜索引擎优化工具音乐app详情页设计
  • 万维网官方网站如何调整wordpress页面的顺序
  • 网站域名个人备案跟企业备案工作优化方案怎么写
  • 做科技汽车的视频网站有哪些内容贵港北京网站建设
  • 深圳网站设计推广苏州做网站设计的公司有哪些
  • seo营销外包狼雨的seo教程
  • 保定市做网站公司地址电话广告设计和平面设计有什么区别
  • 唐山专业做网站做网站的报价
  • 织梦制作wap网站花钱做推广广告哪个网站好
  • 建各企业网站多少钱如何使用qq空间做推广网站
  • 做网站可以用ai做wordpress 4.8 en us
  • 一个网站多个域名备案吗项目建设的背景怎么写
  • 深圳网站建设大公司好wordpress修改中文字体