美文网首页
「位运算」在小数据的中的运用

「位运算」在小数据的中的运用

作者: FCLoveShare | 来源:发表于2019-06-17 16:29 被阅读0次

适用于数据小且量多的场景

  • 数据最好是静态的,需要一次性或者更新性加载
  • 单个tile的数据体积较小,比如只有类型,等级等简单枚举性的数据
  • 数据量庞大

典型的比如游戏中的 大地图

结构如下,只有简单的类型和等级数据

        "l_16_t_1": {
            "xCoord": "16",
            "yCoord": "1",
            "tileType": "10",
            "tileLevel": "7",
        },
        "l_16_t_2": {
            "xCoord": "16",
            "yCoord": "2",
            "tileType": "10",
            "tileLevel": "7",
        },
        ...

设计思路

数据结构设计图
  1. 首先,我们先吧 x ,y 放开,先看下里面的 type lv 如何处理
    type:类型不超过16个
    lv:等级不超过10个
    我们知道一个 byte 的大小是 8 位,我们这里把一个byte分成两个 4 位数据,然后通过位运算进行填充,解数据,每一个 4 位都可盛放小于等于16大于等于0的值类型,所以满足 type 和 lv 的数据结构。
    由于数据类型比较小,我们才能把他两个数据放到一个byte里面去,这个是关键。以此类推,我们可以把其他类型的数据进行拆分,以盛放更多的数据,核心思想就是尽量让每一位都物尽其用,尽可能的压缩数据大
    info 是byte数据
$lv = $info >> 4;
$type = $info - ($lv << 4);
  1. 我们再看 x y
    因为地图的 x,y是有序的,所以下个上图描述的那样,我们可以根据顺序获取 x ,y
    index 是 byte的位置
    n 是行数或者列数
index = ((x - 1) * n) + (y - 1);
  1. 从上面两步我们可看出,我们是把多有的地图数据转换成了 byte 数据,每一个 byte 代表一个tile
    实际在我们开发中,我们可以将byte数组转换成字符串传输

我们的测验结果
单纯json传输的话,800*800 tile的大地图大概需要20s,这显然是不行的
位运算传的话只需要2s,效果还是很显著的

相关文章

  • 「位运算」在小数据的中的运用

    适用于数据小且量多的场景 数据最好是静态的,需要一次性或者更新性加载 单个tile的数据体积较小,比如只有类型,等...

  • 位运算练习

    位运算直接对在内存中的二进制数据进行处理,因此处理数据的速度非常快,巧妙的运用位运算可以使程序更简洁和高效。 C中...

  • 巧妙运用C语言位运算

    巧妙运用C语言位运算,C语言是面向过程的,而C++是面向对象的 位运算 位运算的运算分量只能是整型或字符型数据,位...

  • 位运算

    在iOS开发中位运算多使用到枚举中,其他地方运用的相对较少。项目中合理的运用位运算能提高我们代码的执行效率。 一、...

  • 位运算的运用

    前言 从现代计算机电路来说,只有高电平/低电平两种状态,即为0/1状态,计算机中所有的数据按照具体的编码格式以二进...

  • iOS 位运算的运用

    枚举类型的设计: 设置类型可以是 MediaType_Text | MediaType_Photo | Med...

  • 位运算运用的技巧

    Go 中的位运算符 & 按位与 ^ 一元操作为非,二元操作为异或 | 按位或 &^ 清零操作,为二元操作,a&^b...

  • Java中位运算符的运用

    位运算符分为:按位与、按位或、按位异或、左移、右移,符号表示分别是:&、|、^、<<、>>,在Java或者Andr...

  • Python基础入门:从变量到异常处理(1天)--阿里云天池

    变量、运算符与数据类型和位运算 2 变量、运算符与数据类型 2.1注释 1.在python中,#表示注释,作用于整...

  • 2017年12月14日daily

    所谓16位,主要指CPU当中的运算部件可以支持16位数据的运算。 因为运算当中所需要的数据一般会放在通用寄存器中,...

网友评论

      本文标题:「位运算」在小数据的中的运用

      本文链接:https://www.haomeiwen.com/subject/fqnafctx.html