+
 新版

觉得zephir 好慢, 我是哪里没用好吗

yousee_lee 发布于 2017/01/09 20:26
阅读 570
收藏 0

先上代码 (文件名是闭着眼睛取的, 不是重点)

unix.zep

namespace Rex;
class Unix
{

    public static function time_stamp()
    {
        return time();
    }

    public static function time_stamp_ms()
    {
        return intval(microtime(true)*1000);
    }

    public static function looploop(int! times){
        loop {
            let times --;
            if times <= 0 {break;}
            self::looploop(times);
        }
    }
}



zephir bulid 


unix.php

namespace Pex;
class Unix{

    public static function unix_time_stamp(){
        return time();
    }
    public static function unix_time_stamp_ms(){
        return intval(microtime(true)*1000);
    }

    public static function looploop($times){
        for(;;){
            $times --;
            if ($times <= 0){
                break;
            }
            self::looploop($times);
        }
    }
}



测试代码

$times = 25;


$begin_time = Unix::unix_time_stamp_ms();
Unix::looploop($times);
$end_time = Unix::unix_time_stamp_ms();
echo $end_time - $begin_time;
echo "\n";


$begin_time = Unix::unix_time_stamp_ms();
\Rex\Unix::looploop($times);
$end_time = Unix::unix_time_stamp_ms();
echo $end_time - $begin_time;
echo "\n";

$begin_time = Unix::unix_time_stamp_ms();
Unix::looploop($times);
$end_time = Unix::unix_time_stamp_ms();
echo $end_time - $begin_time;
echo "\n";



结果

#php test.php
1286
8928
1227




加载中
0
宏哥
宏哥

我测试的结果是

zephir并不见得更快

但是可以用来保护版权

y
yousee_lee
嗯, 但也太!!!慢了...慢到完全不可以接受啊
eechen
eechen
好好的 opcache.file_cache 放着不用,去折腾zephir.
0
hylent
hylent

我竟无言以对。。总的来说,还是有优势的吧。

  • 编译成二进制扩展,一定程度上保护源码
  • zephir本身有optimizer机制,可以用一部分c代码来实现一个zephir函数
  • zephir更适合写框架,不适合写业务。没见有人说phalcon慢。毕竟直接以扩展的形式加载,比autoload每次请求都要一个一个文件的加载的纯php实现的框架要快。


0
xianjigang
xianjigang

不会吧,一百亿次循环,都不需要一秒,10万长度的数组,经过了5千万次循环进行冒泡排序,时间也没能超过一秒,如果再把数字设大,就内存不够了。

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部