对象缓存 - 存储克隆对象或序列化数据更有效吗?

时间:2012-04-04 13:11:13

标签: php performance serialization

假设我正在从数据库加载大量对象。这些是普通的普通PHP对象,没有任何花哨的继承。假设我可能会更改其中一些对象并希望将它们写回数据库,但只使用UPDATE ... SET ...查询中实际不同的字段。还假设我事先不知道哪些对象将被更改。

我认为我需要复制所有加载的对象,并保留以供参考和比较,我是否需要将对象写回数据库。

我看到两种可能的方法:

  • 我可以克隆所有已加载的对象并存储在单独的列表中。保存时,使用索引在列表中查找对象,并比较值。
  • 或者,我可以简单地序列化加载到字符串中的所有内容,并保持不变。保存时,在字符串中找到序列化对象(以某种方式),对其进行反序列化,比较值,然后就可以了。

在效率方面(主要是记忆,但速度也是一个考虑因素),这将是有利的吗?

1 个答案:

答案 0 :(得分:1)

如果对象的状态发生了变化,你实际上需要比较一些东西。如果您甚至不想跟踪哪个对象已更改,而且还想跟踪哪个成员,则需要为每个成员设置一个状态。

由于您不想扩展原始对象(例如,它们可能有一个标记,它们在更改时无效),您需要从外部跟踪状态。我会说序列化可能是最好的选择。克隆会占用更多内存。