Bitmap64为什么比bitmap32慢

news2025/1/24 17:55:53

https://www.bilibili.com/video/BV1vU4y1q7KR/?spm_id_from=333.788&vd_source=fa36a95b3c3fa4f32dd400f8cabddeaf

在这里插入图片描述

原因跟 RoaringBitmap64 的实现有关,RoaringBitmap64 是由一系列 RoaringBitmap32 表示。实现方式有很多种,一种比较通用的做法用 map 存储,是把前 32 位存成 key,value 是 后 32 所对应的 RoaringBitmap32,RoaringBitmap32 的实现如图中所示。
第一层称之为 Chunk(高 16 位),如果该取值范围内没有数据就不会创建 Chunk。
第二层称之为 Container(低 16 位),会依据数据分布进行创建。
RoaringBitmap32 使用两种容器结构: Array Container 和 Bitmap Container。Array Container 存放稀疏的数据,Bitmap Container 存放稠密的数据。若一个 Container 里面的元素数量小于 4096,就使用 Array Container;反之,就用 Bitmap 来存储值。
当数据比较稀疏的时候,我们发现一个人群包对应的 RoaringBitmap64 由很多个 RoaringBitmap32 组成,每个 RoaringBitmap32 内部又由很多个 array container 组成。而对有序数组的交并补计算尽管也比较高效,但是相比于 bitmap 计算来说还是有明显的差异。这样导致计算性能提升不上去。因此我们就在想,能不能通过编码的方式,对区间内的数据进行编码,让数据更加集中,从而提升计算效率。事实上我们也是这么做的,我们实现了一种高效的编码,希望达到如下效果:

编码后同一个区间内的用户相对集中
不同区间的用户编码后同样在不同的区间内
编码后同一个人群包同一个区间内的用户 id 相对集中

通过编码,能够非常好地加速计算,计算速度提升 1~2 个量级

作者:字节跳动技术团队
链接:https://juejin.cn/post/6859570827051368462
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/105072.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MyBatis】MyBatis Plus的使用

1.Mybatis-Plus 1.1 简介 MyBatis-Plus 是一个 Mybatis 增强版工具,在 MyBatis 上扩充了其他功能没有改变其基本功能,为了简化开发提交效率而存在。 官网文档地址:   https://mp.baomidou.com/guide/ MyBatis-Plus 特性:  …

非科班出身转行IT难吗?好找工作吗?

大家都知道,IT行业是出了名的高薪行业,很多传统行业/专业的小伙伴由于薪资低、就业机会少而有了想转行IT的想法。 他们通常有以下几个问题: 非计算机专业0基础能学会技术吗?非计算机专业如何转行到IT行业?非计算机专…

记录--可视化大屏-用threejs撸一个3d中国地图

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 不想看繁琐步骤的,可以直接去github下载项目,如果可以顺便来个star哈哈 本项目使用vue-cli创建,但不影响使用,主要绘制都已封装成类 1、使用geoJson绘制…

Java并发系列源码分析(四)--StampedLock

简介 ReentrantReadWriteLock是一个悲观的可重入的读写锁,而StampedLock既支持悲观锁也支持乐观锁但不支持锁的重入, 在ReentrantReadWriteLock下如果多个线程同时获取读锁的时候,获取写锁的线程就会被挂起进行等待,在StampedLock乐观锁下如果有线程加了写锁,其它读线程可以获…

英语不好能不能学好python?试试我的方法就知道了

这是本文的目录前言一、交互环境与print输出(python编程常用单词)二、字符串操作(python编程常用单词)三、重复\替换\转换\原始字符串(python编程常用单词)四、去除\查询\计数(python编程常用单…

JavaWeb之Servelt学习01

目录 1.Servlet 1.1快速入门 1.2Servlet 执行原理 1.3Servlet执行方法 1.3.1Servlet中的生命周期方法 1.4注解配置 1.5.Servlet体系结构 1.6Servlet相关配置 1.Servlet 概念:运行在服务端的小程序 Servlet就是一个接口,定义了java类被浏览器访问到…

高速高精度半导体运动台设计(二)

高速高精运动平台的性能不仅与运动控制器、伺服驱动相关,也与电机本身的性能密切相关。如图 5-2 所示的运动平台采用了雅科贝思的直线电机,直接驱动负载,刚性高,响应快,同时选用了高性能多轴运动控制卡和 GTHD 系列高性…

【Java 数据结构】树和二叉树

篮球哥温馨提示:编程的同时不要忘记锻炼哦!一棵倒立过来的树. 目录 1、什么是树? 1.1 简单认识树 1.2 树的概念 1.3 树的表示形式 2、二叉树 2.1 二叉树的概念 2.2 特殊的二叉树 2.3 二叉树的性质 2.4 二叉树性质相关习题 3、实…

uniapp 多商品sku组件v3版本

如果您正在寻找一款v3版本的多商品sku组件的话,那我想这款组件刚好可以满足各位。 先来简单看一眼效果图: 看起来是不是还不错,如果我告诉你还可以设置主题色会不会显得更加惊艳些,只需要按照数组格式将rgb的颜色传递给组件,…

智慧医疗中人工智能的7大应用|数据标注

从药物研发到预测肾脏疾病,人工智能在智慧医疗领域应用广泛。 人工智能在许多医学领域和专业中的应用正在成为现实。人工智能、机器学习、自然语言处理和深度学习使智慧医疗利益相关者和医疗专业人员能够更快、更准确地明确智慧医疗需求和解决方案,并依…

【WPF绑定2】 ComboBox SelectedValue复杂数据类型绑定

前言 这次绑定是一次非常痛苦的经历,因为SelectedValue总是不能生效!我一度怀疑是wpf的Bug。其实还是自己没搞清楚。 在之前的一篇文章中: http://t.csdn.cn/A4W6Ahttp://t.csdn.cn/A4W6A我也写个ComboBox的绑定,但是当时没有指…

css实现两列/三列布局

文章目录css实现两列/三列布局两列布局三列布局css实现两列/三列布局 两列布局 第一种方式&#xff1a;浮动实现 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible"…

点击类化学试剂绿色固体ICG-TCO,取用时保持干燥的环境

一、试剂反应基团&#xff08;Reagent reaction group&#xff09;&#xff1a; 点击类化学试剂包括&#xff1a;DBCO、TCO、Tetrazine、Azide、Alkyne、Auxiliary reagents等。其中TCO又包含了与氨基反应的&#xff0c;与羧基反应的&#xff0c;与荧光素交联的&#xff0c;与…

非零基础自学Golang 第14章 反射 14.3 对结构体的反射操作

非零基础自学Golang 文章目录非零基础自学Golang第14章 反射14.3 对结构体的反射操作14.3.1 获取结构体成员类型14.3.2 获取结构体成员字段的值14.3.3 反射执行结构体方法第14章 反射 14.3 对结构体的反射操作 反射不仅可以获取普通类型变量的值&#xff0c;还可以获取结构体…

中钢矿院冲刺科创板:上半年营收4亿 拟募资5.54亿

雷递网 雷建平 12月20日中钢集团马鞍山矿山研究总院股份有限公司&#xff08;简称&#xff1a;“中钢矿院”&#xff09;日前递交招股书&#xff0c;准备在科创板上市。中钢矿院计划募资5.54亿元&#xff0c;其中&#xff0c;1.41亿元用于国家级研发平台研发能力提升与矿产资源…

Python图像处理【5】图像扭曲与逆扭曲详解

图像扭曲与逆扭曲详解0. 前言1. 使用 scikit-image warp() 函数执行图像变换1.1 scikit-image warp() 函数原理1.2 利用 warp() 函数实现图像变换2. 漩涡变换详解2.1 旋涡变换原理2.2 使用 scikit-image warp() 实现旋涡变换2.3 使用 scipy.ndimage 实现漩涡变换3. 使用 scikit…

如何抓住2023年技术创新的浪潮和趋势?

编辑 | 阿冒 设计 | 沐由千百年以来&#xff0c;技术的进步始终与人类社会的发展紧密相连&#xff0c;每一次重大的技术变革均对社会带来的深刻而持久的影响。最近半个世纪以来的表征&#xff0c;尤其明显。数字技术&#xff0c;正在以其“春风化雨”的姿态滋润着万物&#…

界面组件DevExpress v22.2官宣发布——正式支持.NET 7

DevExpress拥有.NET开发需要的所有平台控件&#xff0c;包含600多个UI控件、报表平台、DevExpress Dashboard eXpressApp 框架、适用于 Visual Studio的CodeRush等一系列辅助工具&#xff0c;该组件拥有众多新产品和数十个具有高影响力的功能&#xff0c;可为桌面、Web和移动应…

最新系统MacOs13 Ventura(M1/M2芯片) + Parallels Desktop 18(PD18史上最强虚拟机)永久使用攻略

众神殿内&#xff0c;高朋满座&#xff0c;胜友如云&#xff0c;Vmware、VirtualBox、Utm等虚拟机大神群英荟萃&#xff0c;只见位于C位王座上的Parallels怅惘抬头&#xff0c;缓缓逡巡&#xff0c;睥睨群小&#xff0c;目光到处&#xff0c;无人敢抬头对视。 是的&#xff0c…