0

我正在尝试在执行请求期间优化称为 560x 的函数。

功能是这样的(一些信息已编辑):

function foo($text) {
    if (preg_match('/[`"]/', $text)) {
        throw new Exception("very detailed error");
    }
    $text = explode('.', $text);
    $tick = '*';
    return $tick . implode("$tick.$tick", $text) . $tick;
}

使用 XDEBUG PHP profiler + Webgrind,我看到这个函数的这些统计信息(以毫秒为单位): 在此处输入图像描述

如您所见,在preg_match, explode, implode combined中只花费了 3ms 。剩下的 20 毫秒只用于调用这些函数并连接一些字符串。有没有办法可以降低此功能的总自身成本?

我试过添加

use function preg_match;
use function explode;
use function implode;

正如这里所建议的那样,但我没有看到任何改进。有什么建议么?

4

1 回答 1

0

考虑切换到更轻量级的函数(但可能会失去一些可读性):

function foo($text) {
    if (strpos($text, '"')!==FALSE || strpos($text, '`')!==FALSE) {
        throw new Exception("very detailed error");
    }
    $tick = '*';
    return $tick . str_replace('.', "$tick.$tick", $text) . $tick;
}
于 2020-08-05T00:31:54.387 回答