PHP中最昂贵的操作有哪些?我知道过度使用@运算符的事情可能很昂贵。你还会考虑什么?
答案 0 :(得分:19)
一些微观优化是很好的做法,但不会对您的底线表现产生太大影响:
echo 'How are you ',$name,' I am fine ',$var1
比echo 'How are you '.$name.' I am fine '.$var1
答案 1 :(得分:5)
不要试图找出速度较慢的潜在区域,而是使用分析工具。安装xDebug可能是我为改进我编写的代码所做的最简单和最好的事情之一。使用WinCacheGrind(或适用于您的操作系统的正确版本)安装,以获得最佳效果。
答案 2 :(得分:4)
答案 3 :(得分:2)
通过网络连接进行的任何事情 - 例如调用web服务:它通常比在本地执行操作需要更多时间。
(即使它的CPU成本不高,也需要花费时间)
答案 4 :(得分:1)
我会说循环中的SQL查询。比如这个:
foreach ($db->query('SELECT * FROM categories') as $cat)
{
foreach ($db->query('SELECT * FROM items WHERE cat_id = ' . $cat['cat_id']) as $item)
{
}
}
对于记录,可以缩短为以下内容:
$sql = 'SELECT c.*, i.*
FROM categoriess c
LEFT JOIN items i USING (cat_id)
ORDER BY c.cat_order';
foreach ($db->query($sql) as $row)
{
}
答案 5 :(得分:1)
curl_exec()非常慢。此外,大多数str_ *操作比正则表达式操作更快。
答案 6 :(得分:1)
人们认为@很昂贵,可能只是因为这句话在网上广泛传播。
引自:http://www.php.net/manual/en/language.operators.errorcontrol.php#102543
如果您想知道使用@对性能有何影响 运营商是,考虑这个例子。这里,第二个脚本(使用 @运算符执行时需要1.75倍...几乎加倍 第一个脚本的时间。
所以虽然是,但每次迭代都有一些开销,我们看到@ 运营商每次呼叫仅添加.005毫秒。没有理由,imho,to 避免使用@运算符。
真正的0m7.617s用户0m6.788s sys 0m0.792s
vs
真0m13.333s用户0m12.437s sys 0m0.836s
你几乎无法“过度使用”操作员,如果它正在进行你想要的操作,它通常是值得的。
答案 7 :(得分:0)
foreach()
语句,尤其是嵌套语句,通常很昂贵;虽然这是我的天真 - 偶尔计划不好 - 编程的方法,因为php的错误。
虽然我认为JS和其他语言也是如此,但几乎可以肯定是我的错。 = /
答案 8 :(得分:0)
根据我自己的经验,实际上最昂贵的操作是echo
声明。尝试将所有字符串连接在一起,然后将它们输出到浏览器,然后是数据库调用,特别是连接!
只需简单地重构算法和数据结构,代码有时也可以提高x10的性能。得到任何程序,尝试一半的长度,你能再次减半吗?
答案 9 :(得分:0)
uniqid()
是愚蠢的代价。不要用来生成许多唯一标识符。