dmitry-kirillov / simplepack
0.0.2
2024-04-26 02:19 UTC
Requires
- php: >=5.4
- ext-json: *
This package is not auto-updated.
Last update: 2024-09-28 03:07:20 UTC
README
这是一个实验性的PHP库,它可以帮助在大量创建和使用小尺寸关联数组时减少内存占用。
重要提示:此库尚未准备好用于生产环境!
一般信息
这个库受到了数据库和其他语言中使用的各种算法的启发(例如Redis)。想法是将小哈希表转换为线性数据结构,并将它们存储在单个字符串中。这种方法减少了内存消耗,还提高了缓存局部性。显然,时间复杂度增加到了O(n),但考虑到数据集很小,实际差异微乎其微。
优点
- 纯PHP代码
- 支持PHP 5.4及以后版本
- 比关联数组消耗约4倍少的内存
- 比对象(DTOs)消耗约2倍少的内存
缺点
- 性能比数组和对象慢得多
- 不能在所有场景下替代数组(见以下示例)
使用场景
- 大量一维数组,具有动态字符串键和相对较小的值
- 在这些数组上执行大量的foreach循环
- 最小更新/删除操作
需求
- PHP 5.4或更高版本(尚未测试PHP 5!)
- JSON扩展(用于旧版本的PHP)
安装
composer require dmitry-kirillov/simplepack
使用
此类对象可以在大多数场景下代替关联数组
$data = new Simplepack(); $data['name'] = 'John'; $data['age'] = 30; $data['is_married'] = true; foreach ($data as $key => $value) { // Your code here... }
但是,重要的是要记住,某些函数和运算符将不会工作
$keyExists = array_key_exists('name', $data); // PHP Fatal error $data['age']++; // PHP Notice; the value stays the same
已知问题
- 极高的CPU使用率
- 不支持32位系统
许可协议
MIT