使用提取方法优化 laravel 个项目

Optimize laravel project with extracting methods

我正在进行一个使用 laravel 5.1 的 laravel 项目。有一个过程需要超过 8 秒。在那个过程中,有一个方法有将近 250 行 code.In 优化角度,如果我将该代码提取到几个方法中,它会比平常更快还是会花费很多时间?

将一个大函数分解为多个小函数不会更快,反而会因为多个函数调用而变慢。

我会建议改变你的方法,为异步进程使用队列等。

有了 PHP,您通常可以做一些事情来加速代码:

尽可能使用引用。

默认情况下,无论何时调用带有参数的函数,都会生成变量的副本。如果频繁调用以数组或字符串作为参数的函数,这可能会非常昂贵。所以不要做这样的事情:

function f($array) {

使用:

function f(&$array) {

这意味着对 $array 的任何修改也会影响原始数组,因此它应该仅在 $array 未被修改或您不关心它是否被修改的情况下使用已修改。

foreach 循环也是如此。只需确保在循环完成后 unset() 变量以避免出现问题。

foreach ($set as &$element) { ... }
unset($element);

另一个技巧是预先分配缓冲区而不是让它们自动扩展。例如,而不是:

$numbers = [1, 2, 3, 4, ... 10000000];
$inverted = [];
foreach ($numbers as $num) { $inverted[] = 1 / $num; } 

您确保 $inverted 已经具有适合所有元素所需的尺寸:

$numbers = [1, 2, 3, 4, ... 10000000];
$inverted = array_fill(0, count($numbers), 0);
foreach ($numbers as $i => $num) { $inverted[$i] = 1 / $num; } 

同样,尽可能避免调整字符串和数组的大小。使用索引等

正则表达式虽然方便,但却是性能的敌人。避免将它们用于简单任务。

当然所有考虑问题的都是PHP代码。也许不是。如果您使用的是数据库,您可能需要重新评估您执行 SQL 查询的方式。构建它们的方式会严重影响性能。