使用提取方法优化 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 查询的方式。构建它们的方式会严重影响性能。
我正在进行一个使用 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 查询的方式。构建它们的方式会严重影响性能。