重新创建对象或将其存储在会话变量中更快吗?

时间:2010-11-11 10:18:10

标签: php performance object session-variables

很抱歉,如果这对非菜鸟来说显而易见。是否更快:

  • 每次有人在会话期间转到某个页面时重新创建对象实例

  • 首次创建会话变量时将对象实例存储在会话变量中,然后在再次访问该页面时始终从该位置获取

我不确定这是否会变成“一根弦多长时间?”有点问题,但如果确实如此,那么也许你可以让我知道做决定涉及哪些因素?

5 个答案:

答案 0 :(得分:4)

会话数据存储为文本,而非二进制数据,因此当您将其投入会话时,无论如何都会重新创建对象。它可能比自己初始化要慢一点,因为它必须进行一些字符串解析但我怀疑它是多么担心。简而言之,它可能无论如何都没有区别。

答案 1 :(得分:0)

这当然取决于创建对象时完成了多少逻辑。您应该对两种变体做一些基准测试。

答案 2 :(得分:0)

如果不进行测量,我会说存储和检索应该更快。 为了重新创建对象,你必须调用多个构造函数等,而检索不应该调用任何函数调用。

答案 3 :(得分:0)

这显然取决于你在对象中有哪些字段,有多少字段以及如何填充它们。无论如何,每次加载页面时都会发生对象的发生,因此这是字段及其来源的问题。

答案 4 :(得分:0)

要小心谨慎地尝试优化它。请记住,在会话中存储项目可能会很繁重,尤其是在您的网站流量很大的情况下。

另外,我看到很多人创建了一个对象,它访问数据库并加载它的属性。然后将其存储在会话中,在回发时更新,然后保存回数据库。

这很好,但它会导致难以进行并发检查 - 比如你的对象有上次保存的时间戳 - 如果你每次保存之前重新加载它,你可以很容易地检查自上次加载后时间戳是否已经改变,在这种情况下,您可能需要停止保存才能继续。

无论哪种方式,差异都不会很大。