有哪些好的 PHP 性能技巧?

2022-08-30 18:41:28

我听说过一些PHP的性能技巧,例如根据情况使用over。strtr()str_replace()preg_replace()

就使用某些函数而不是其他函数以及代码样式而言,您知道哪些性能提示?

编辑:我不是在谈论使用那些使代码可读性降低的东西,比如over,我说的是使用preg_函数而不是正则表达式的ereg_函数。!isset($foo{5})strlen($foo) < 5

编辑:我问这个问题的原因不是为了挑剔何时进行优化,而是为了大致了解在有限的替代方案中什么往往是最有效的。例如,检查mysql语句是否返回错误可以说比从一开始就禁止显示错误更好。


答案 1

这个问题真的很模糊。如果要优化脚本,请首先检查数据库并尝试优化算法。没有多少纯粹的PHP性能技巧会很重要。我看看:

  • 连接变量比仅将它们放在双引号字符串中更快。

    $var = 'Hello ' . $world; // is faster than
    $var = "Hello $world"; // or
    $var = "Hello {$world}";
    

是的,它更快,但是第二和第三种形式更具可读性,速度损失如此之低,甚至无关紧要。

  • 使用循环时,如果条件使用常量,请将其放在循环之前。例如:

    for ($i = 0; $i < count($my_array); $i++)
    

这将每次评估计数($my_array)。只需在循环之前创建一个额外的变量,甚至在循环内部:

for ($i = 0, $count = count($my_array); $i < $count; $i++)
  • 最糟糕的事情肯定是循环内的查询。要么是因为缺乏知识(试图在PHP中模拟JOIN),要么只是因为你没有考虑它(例如,许多人插入到循环中)。

    $query = mysql_query("SELECT id FROM your_table");
    while ($row = mysql_fetch_assoc($query)) {
        $query2 = mysql_query("SELECT * FROM your_other_table WHERE id = {$row['id']}");
        // etc
    }
    

永远不要这样做。这是一个简单的内部连接。

可能还有更多,但实际上,不值得把它们都写下来。编写代码,稍后进行优化。

附言:我开始写这个答案时没有,链接中可能已经说过了一些事情。

编辑:由于某种原因,我无法正确格式化代码。我真的不明白为什么。


答案 2

过早优化是万恶之源

这是您需要的最重要的提示。如果有一天你遇到了真正的性能问题,请分析你的应用程序,检测受感染的区域,然后来这里再次询问:)


推荐