【问题标题】:PHP : Does serialize cost much performance?PHP:序列化会消耗很多性能吗?
【发布时间】:2012-04-04 16:37:18
【问题描述】:

我打算使用serialize来存储一些大数组以保存到mySQL中,我想知道这种方法是否需要可数的性能?


[编辑]

我要存储的数组是用户的价目表。我制作了一个动态表单供用户输入他们的价目表,每个价目表包含大约 20 到 100 行。每行有 4 个字段:产品名称、单位、批发价、零售价。

我只想保存列表并重新显示它们,而不是通过 SQL 查询。

【问题讨论】:

  • 你为什么要存储所说的大数组?最终目标是什么?这将有助于提供性能建议:)。
  • 量一下。您可以设置一个测试来直接为您的函数计时,并在几分钟内得到一个完全确定的答案,而不是等待互联网上的陌生人数小时来猜测!
  • 使用像 XDebug 或 XHProf 这样的 Profiler 并计算它是否可数。
  • @Crashworks :我是 PHP 新手,在这个问题之前我不知道计算处理时间的方法。顺便说一句,我认为最好询问是否有人尝试过这个,以及他们是否遇到过性能问题以外的其他问题。

标签: php performance serialization


【解决方案1】:

序列化处理大事情需要很长时间,处理小事情需要很短的时间。你的东西有多大,你需要多快?

您可以使用类似的方法直接测量特定数组的 serialize() 的微秒成本

$startTime = microtime(true);
yourSerializeFunction(); // <-- you are timing this
$endTime = microtime(true);
var_dump( $endTime - $startTime )

如果你想专业一点,也有lots of other profiling options

【讨论】:

    【解决方案2】:

    数组有多大?它应该是一个线性问题,因此与其他方法相比,性能影响可能不会那么大。如果您担心,您可以随时对其进行基准测试。

    话虽如此,请记住,与规范化数据相比,将序列化数组保存在关系数据库中是很糟糕的。您将很难使用其他语言的序列化数组,并且几乎不可能在 WHERE 子句中查询数据。我希望你已经考虑到这一点。

    【讨论】:

      【解决方案3】:

      serialize() 和相应的 unserialize() 都存在处理器开销,尽管它可以忽略不计:除非您对每个请求执行数千次或处理非常大的数据量,否则您甚至不会注意到。

      序列化数据较大,在数据库中搜索值不太实用,因此我建议对表进行更好的规范化,这样您就不需要这样做

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-09
        • 2013-05-25
        • 2015-10-29
        • 2010-10-08
        • 2017-01-19
        • 2022-09-26
        • 2019-08-21
        • 2015-04-28
        相关资源
        最近更新 更多