【问题标题】:PHP: Does it make sense to create constant arrays to increase performance?PHP:创建常量数组来提高性能有意义吗?
【发布时间】:2012-03-15 17:06:50
【问题描述】:

我需要使用相同的$search$replace 执行许多str_replace($search, $replace, $input)。这些被分解成一个函数:

function sr($input) {

    $search = explode(",","s1,s2,s3,....");
    $replace = explode(",","r1,r2,r3,...");

    return str_replace($search, $replace, $input);

}

效率不高。从另一个 SO question,我看到我可以创建常量数组,但建议的方法意味着序列化。我敢打赌这也不是很有效,但我说的对吗?

我有一种编译语言思维方式,所以每当我可以使某些东西保持不变时,我就会很高兴。但它在 PHP 中有意义吗?我不是 PHP 专家。

更准确的说,知道这个功能会在用户对页面进行web请求时使用,我如何才能有效地优化爆炸? PHP中有预编译代码之类的东西吗?或者我可以一次有效地定义常量数组吗(比如测试常量是否已经在上下文中创建/可用)?

更新

考虑到Truth的建议,我们可以将函数修改如下:

function sr($input) {

    $search = array("s1","s2","s3",....");
    $replace = array("r1","r2","r3",...");

    return str_replace($search, $replace, $input);

}

剩下的问题是:在每次调用时声明这些数组是否最佳,或者我们是否应该尝试在上下文中将它们创建为常量?

【问题讨论】:

  • 有PHP编译器,但不是所有的PHP脚本都能编译。
  • 我看不出爆炸的意义。为什么不直接设置$search = array("s1", "s2", "s3", ....);
  • @Truth 是的,你说得有道理,我只是缺乏 PHP 经验。我正在更新我的问题
  • 您可以为此目的使用 static 关键字,但我有任何信息,如果它会影响性能。

标签: php arrays optimization constants


【解决方案1】:

[立即采取随机行动] 来提高性能是否有意义?

没有。

  1. 只有在遇到某些性能问题时才开始担心性能。
  2. 一旦你得到它 - 开始分析
  3. 一旦获得指向特定瓶颈的特定分析结果 - 开始优化该瓶颈。
  4. 重复直到完成。

【讨论】:

  • 假设我们遇到了瓶颈,你会如何回答我的问题?
  • 他的意思是,如果你不了解性能问题在哪里——以及它是否真的存在,你就不能考虑优化。
  • @JVerstry 简单易懂。我会避免对每个用户的请求执行许多 str_replace。
猜你喜欢
  • 2011-08-19
  • 2014-08-24
  • 2021-09-19
  • 1970-01-01
  • 1970-01-01
  • 2016-05-17
  • 2012-07-24
  • 2021-01-19
  • 2016-10-14
相关资源
最近更新 更多