为啥使用 zephir 编写的扩展性能还不如原生的 php 呢?

本人初学 zephir ,想写个例子实际测试一下 zephir 的性能怎么样,结果令我疑惑不解,我的代码如下:

php 函数:

function getRandStr($length) {
    $str = 'abcdefghijklmnopqrstuvwxyz123456789';
    return substr(str_shuffle($str), 0, $length);
}

编写的 zephir 扩展代码:

namespace HelloWord;
 
class Greeting
{
    public static function say(int len)
    {
            var str = "abcdefghijklmnopqrstuvwxyz123456789";
            return substr(str_shuffle(str), 0, len);
    }
}

然后我测试的代码如下:

$st = de();
for ($i = 0; $i <= 10000000; $i++) {
    HelloWord\Greeting::say(6) . "\n";
}
$en = de();

echo 'zephir: ', $en - $st;
echo "\r\n";

$st = de();
for ($i = 0; $i <= 10000000; $i++) {
    getRandStr(6);
}
$en = de();

echo 'php: ', $en - $st;
echo "\r\n";

function de() {
    [$usec, $sec] = explode(" ", microtime());
    return ((float)$usec + (float)$sec);

}

结果是 zephir 跑完基本上都要 3 秒多,而原生 php 只要 2 秒多,多次测试都是这个结果,即使每次单独运行或者更改先后顺序。

请大神指点一下我这是哪里写的不对还是 zephir 就是性能有问题?

如果 zephir 性能真的如此,我还有必要继续学习用 zephir 开发 php 扩展吗?

阅读 2.1k
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题