保存一些 "STATIC" 数据时,哪个速度更快?数组或缓存数据库表?
Which one is more speed for saving some "STATIC" data? Arrays or cached db tables?
在 Symfony 3.2 中:
我有一些这样的数据(作为数组):
$list1 = [
'field-1' => ['id' => 1, 'group' => 'words', 'title' => 'Field 1'],
'field-2' => ['id' => 2, 'group' => 'words', 'title' => 'Field 2'],
...
...
...
'field-400' => ['id' => 400, 'group' => 'words', 'title' => 'Field 400'],
];
$list2 = [...];
...
$list30 = [...];
如您所见,它大约有 30 个 300-400 行的数组;但它们是一个 Static 数组。(它们以后不会改变)
哪种方式更好?
1- 指示 10 个服务并通过这样的方法获取每一行:
public function getSome($col) {
return $this->list1[$col];
}
2-还是插入10个table(Entity)和缓存主题(因为速度快)?
感谢%
创建播种机并将此数据存储到数据库中。稍后,将此数据作为对象检索并根据您的要求使用。是的,您可以存储到缓存中以加快速度。
这个问题没有确定的答案。这取决于确切的数据集、访问模式(您查询同一个值多少次)、缓存类型(文件或内存),甚至可能取决于硬件资源。
根据经验和常识,我可以建议的是:
- 使用 ORM 通常较慢,即使已缓存
- 使用外部内存缓存服务(例如 memcached)通常比 PHP 内存(例如数组)中的值慢
- 一个更有趣的优化可能是重新映射你的结构,这样你就有一个平面数组,其中每个键都包含整个路径(例如 $value["list1-field-1-id"])
在 Symfony 3.2 中:
我有一些这样的数据(作为数组):
$list1 = [
'field-1' => ['id' => 1, 'group' => 'words', 'title' => 'Field 1'],
'field-2' => ['id' => 2, 'group' => 'words', 'title' => 'Field 2'],
...
...
...
'field-400' => ['id' => 400, 'group' => 'words', 'title' => 'Field 400'],
];
$list2 = [...];
...
$list30 = [...];
如您所见,它大约有 30 个 300-400 行的数组;但它们是一个 Static 数组。(它们以后不会改变)
哪种方式更好?
1- 指示 10 个服务并通过这样的方法获取每一行:
public function getSome($col) {
return $this->list1[$col];
}
2-还是插入10个table(Entity)和缓存主题(因为速度快)?
感谢%
创建播种机并将此数据存储到数据库中。稍后,将此数据作为对象检索并根据您的要求使用。是的,您可以存储到缓存中以加快速度。
这个问题没有确定的答案。这取决于确切的数据集、访问模式(您查询同一个值多少次)、缓存类型(文件或内存),甚至可能取决于硬件资源。
根据经验和常识,我可以建议的是:
- 使用 ORM 通常较慢,即使已缓存
- 使用外部内存缓存服务(例如 memcached)通常比 PHP 内存(例如数组)中的值慢
- 一个更有趣的优化可能是重新映射你的结构,这样你就有一个平面数组,其中每个键都包含整个路径(例如 $value["list1-field-1-id"])