【发布时间】:2023-03-17 04:15:01
【问题描述】:
我正在使用getrusage() 测试所有这些不同的构造,以计算(ru_utime + ru_stime) 在执行它们之前和之后的变化。
事实证明,对于类似的构造执行相同的任务并没有什么不同。以下是结果:printf (1.5 ± 0.5)% 比 print 快foreach (6.0 ± 1.0)% 比 for 循环快(迭代 1kk 个元素的索引数组)for (9.0 ± 1.0)% 比 while 循环快if/else (8.0 ± 1.0)% 比 switch 快(测试了两种情况、6 种情况和 10 种可能例)。
所以我想知道,这些差异真的很重要吗?如果我们在代码中使用所有最有效的此类结构,会有所不同吗?可能有 6%、8%、9% 或 10%,加起来会改变我们代码的效率吗?
或者这些差异仍然不明显,我的意思是服务器对请求的响应几乎不会变化?另外,如果我们使用if/else 而不是switch、for 而不是while、printf 而不是print、foreach 而不是for,它会占用更多内存吗?
【问题讨论】:
-
是的,请使用概要分析器。然后查看 SQL 查询。
-
您使用适当的结构来实现可读性,当差异以纳秒为单位时,不一定是最快的
-
而且性能通常会根据您需要在循环中执行的操作而有所不同:例如如果您需要访问数组的关联键,那么使用
for()几乎没有意义 -
如果你想让某些东西运行得很快,你首先应该优化的是 PHP 本身。
标签: php performance loops conditional-statements