dmitry-kirillov/simplepack

0.0.2 2024-04-26 02:19 UTC

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