本人初学 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 扩展吗?
没人解答,我就去了 zephir 官网问了,有国外大神给予了回答,我贴个地址吧!
https://github.com/zephir-lang/zephir/discussions/2367