Roaring Bitmap的PHP扩展

由于PHP的数组占用比较多内存,在做DAU等统计的时候容易出现内存不足的情况。
后来发现了Roaring Bitmap算法,但是PHP没有对应的扩展。
所以在C/C++的CRoaring库基础上开发了一个PHP扩展,兼容PHP 5.6以及 PHP 7.0+。
项目的代码已经放上Githup 可以下载

php-roaring_bitmap-extension

  • 对CRoaring进行封装的PHP扩展库,兼容 PHP 7.x & PHP 5.6,在 PHP 7.2.16 以及 PHP 5.6.30下测试通过
  • githup上的CRoaring
  • 文件夹里包含的roaring.h roaring.hh roaring.c是CRoaring的0.2.60版本,用amalgamation.sh生成的。因此编译本库不依赖其他额外的库。
  • Roaring bitmap其中一个用途是非常高效的计算DAU以及留存(两个bitmap做and操作即可)等统计,解决PHP保存所有用户ID的原生数组占用过多内存的问题。

Install

中文说明:

  • 下载后将本目录改名roaring_bitmap并放进php的源代码目录,譬如php-7.xxx/ext/roaring_bitmap
  • 进入这个目录,并且运行phpize && ./configure && make install
  • 修改php.ini,将extension=roaring_bitmap.so加进去

Example(32 bit):

  • All method accept 32 bit integer only
  • If there is no requirement for 64-bit integers, 32-bit roaring_bitmap should be used for better performance.
$roaring = new roaring_bitmap;

$roaring->addMany(array(1,2,3));

$n = 3;
printf("contains %d: %d\n", $n, $roaring->contains($n));

$roaring2 = new 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值