加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

[PHP] PHP的纯CPU基准测试(PHP5.5.9 vs PHP7.2.1)

发布时间:2020-05-25 03:13:47 所属栏目:PHP 来源:互联网
导读:PHP的纯CPU基准测试(PHP5.5.9 vs PHP7.2.1):1.bench.php 可在PHP源代码的 php-src/Zend 目录2.micro_bench.php 也可以在 PHP 源代码发布的 php-src/Zend 目录中找到3.同时使用Unix time 命令来计时time php micro_bench.phpPHP5.5.9结果:empty_loop 0.124func

PHP的纯CPU基准测试(PHP5.5.9 vs PHP7.2.1):

1.bench.php 可在PHP源代码的 php-src/Zend 目录

2.micro_bench.php 也可以在 PHP 源代码发布的 php-src/Zend 目录中找到

3.同时使用Unix time 命令来计时

time php micro_bench.php

PHP5.5.9结果:

empty_loop = self::$x = = Foo::$x = = $->x ->x = ->x += ++$->x --$->x ->x++ ->x-- ->x) ->x) ->f() = Foo::TEST Foo() = TEST = $_GET = $GLOBALS[] = $hash[] = $str[] = $a ?: = $f ?: tmp = $f ? $f : $a = $f ? $f : tmp ------------------------real 0m14.498s
user 0m12.110s
sys 0m0.024s

PHP7.2.1结果:

empty_loop = self::$x = = Foo::$x = = $->x ->x = ->x += ++$->x --$->x ->x++ ->x-- ->x) ->x) ->f() = Foo::TEST Foo() = TEST = $_GET = $GLOBALS[] = $hash[] = $str[] = $a ?: = $f ?: tmp = $f ? $f : $a = $f ? $f : tmp ------------------------real 0m5.756s
user 0m4.521s
sys 0m0.028s

性能提升接近三倍

micro_bench.php 测试脚本

}

<span style="color: #0000ff">function simpleucall(<span style="color: #800080">$n<span style="color: #000000">) {
<span style="color: #0000ff">for (<span style="color: #800080">$i = 0; <span style="color: #800080">$i < <span style="color: #800080">$n; <span style="color: #800080">$i++<span style="color: #000000">)
hallo();
}

<span style="color: #0000ff">function simpleudcall(<span style="color: #800080">$n<span style="color: #000000">) {
<span style="color: #0000ff">for (<span style="color: #800080">$i = 0; <span style="color: #800080">$i < <span style="color: #800080">$n; <span style="color: #800080">$i++<span style="color: #000000">)
hallo2();
}

<span style="color: #0000ff">function<span style="color: #000000"> hallo2() {
}

<span style="color: #0000ff">function simpleicall(<span style="color: #800080">$n<span style="color: #000000">) {
<span style="color: #0000ff">for (<span style="color: #800080">$i = 0; <span style="color: #800080">$i < <span style="color: #800080">$n; <span style="color: #800080">$i++<span style="color: #000000">)
<span style="color: #008080">func_num_args<span style="color: #000000">();
}

<span style="color: #0000ff">class<span style="color: #000000"> Foo {
<span style="color: #0000ff">static <span style="color: #800080">$a = 0<span style="color: #000000">;
<span style="color: #0000ff">public <span style="color: #800080">$b = 0<span style="color: #000000">;
<span style="color: #0000ff">const TEST = 0<span style="color: #000000">;

</span><span style="color: #0000ff"&gt;static</span> <span style="color: #0000ff"&gt;function</span> read_static(<span style="color: #800080"&gt;$n</span><span style="color: #000000"&gt;) {
    </span><span style="color: #0000ff"&gt;for</span> (<span style="color: #800080"&gt;$i</span> = 0; <span style="color: #800080"&gt;$i</span> < <span style="color: #800080"&gt;$n</span>; ++<span style="color: #800080"&gt;$i</span><span style="color: #000000"&gt;) {
        </span><span style="color: #800080"&gt;$x</span> = self::<span style="color: #800080"&gt;$a</span><span style="color: #000000"&gt;;
    }
}

</span><span style="color: #0000ff"&gt;static</span> <span style="color: #0000ff"&gt;function</span> write_static(<span style="color: #800080"&gt;$n</span><span style="color: #000000"&gt;) {
    </span><span style="color: #0000ff"&gt;for</span> (<span style="color: #800080"&gt;$i</span> = 0; <span style="color: #800080"&gt;$i</span> < <span style="color: #800080"&gt;$n</span>; ++<span style="color: #800080"&gt;$i</span><span style="color: #000000"&gt;) {
        self</span>::<span style="color: #800080"&gt;$a</span> = 0<span style="color: #000000"&gt;;
    }
}

</span><span style="color: #0000ff"&gt;static</span> <span style="color: #0000ff"&gt;function</span> isset_static(<span style="color: #800080"&gt;$n</span><span style="color: #000000"&gt;) {
    </span><span style="color: #0000ff"&gt;for</span> (<span style="color: #800080"&gt;$i</span> = 0; <span style="color: #800080"&gt;$i</span> < <span style="color: #800080"&gt;$n</span>; ++<span style="color: #800080"&gt;$i</span><span style="color: #000000"&gt;) {
        </span><span style="color: #800080"&gt;$x</span> = <span style="color: #0000ff"&gt;isset</span>(self::<span style="color: #800080"&gt;$a</span><span style="color: #000000"&gt;);
    }
}

</span><span style="color: #0000ff"&gt;static</span> <span style="color: #0000ff"&gt;function</span> empty_static(<span style="color: #800080"&gt;$n</span><span style="color: #000000"&gt;) {
    </span><span style="color: #0000ff"&gt;for</span> (<span style="color: #800080"&gt;$i</span> = 0; <span style="color: #800080"&gt;$i</span> < <span style="color: #800080"&gt;$n</span>; ++<span style="color: #800080"&gt;$i</span><span style="color: #000000"&gt;) {
        </span><span style="color: #800080"&gt;$x</span> = <span style="color: #0000ff"&gt;empty</span>(self::<span style="color: #800080"&gt;$a</span><span style="color: #000000"&gt;);
    }
}

</span><span style="color: #0000ff"&gt;static</span> <span style="color: #0000ff"&gt;function</span><span style="color: #000000"&gt; f() {
}

</span><span style="color: #0000ff"&gt;static</span> <span style="color: #0000ff"&gt;function</span> call_static(<span style="color: #800080"&gt;$n</span><span style="color: #000000"&gt;) {
    </span><span style="color: #0000ff"&gt;for</span> (<span style="color: #800080"&gt;$i</span> = 0; <span style="color: #800080"&gt;$i</span> < <span style="color: #800080"&gt;$n</span>; ++<span style="color: #800080"&gt;$i</span><span style="color: #000000"&gt;) {
        self</span>::<span style="color: #000000"&gt;f();
    }
}

</span><span style="color: #0000ff"&gt;function</span> read_prop(<span style="color: #800080"&gt;$n</span><span style="color: #000000"&gt;) {
    </span><span style="color: #0000ff"&gt;for</span> (<span style="color: #800080"&gt;$i</span> = 0; <span style="color: #800080"&gt;$i</span> < <span style="color: #800080"&gt;$n</span>; ++<span style="color: #800080"&gt;$i</span><span style="color: #000000"&gt;) {
        </span><span style="color: #800080"&gt;$x</span> = <span style="color: #800080"&gt;$this</span>-><span style="color: #000000"&gt;b;
    }
}

</span><span style="color: #0000ff"&gt;function</span> write_prop(<span style="color: #800080"&gt;$n</span><span style="color: #000000"&gt;) {
    </span><span style="color: #0000ff"&gt;for</span> (<span style="color: #800080"&gt;$i</span> = 0; <span style="color: #800080"&gt;$i</span> < <span style="color: #800080"&gt;$n</span>; ++<span style="color: #800080"&gt;$i</span><span style="color: #000000"&gt;) {
        </span><span style="color: #800080"&gt;$this</span>->b = 0<span style="color: #000000"&gt;;
    }
}

</span><span style="color: #0000ff"&gt;function</span> assign_add_prop(<span style="color: #800080"&gt;$n</span><span style="color: #000000"&gt;) {
    </span><span style="color: #0000ff"&gt;for</span> (<span style="color: #800080"&gt;$i</span> = 0; <span style="color: #800080"&gt;$i</span> < <span style="color: #800080"&gt;$n</span>; ++<span style="color: #800080"&gt;$i</span><span style="color: #000000"&gt;) {
        </span><span style="color: #800080"&gt;$this</span>->b += 2<span style="color: #000000"&gt;;
    }
}

</span><span style="color: #0000ff"&gt;function</span> pre_inc_prop(<span style="color: #800080"&gt;$n</span><span style="color: #000000"&gt;) {
    </span><span style="color: #0000ff"&gt;for</span> (<span style="color: #800080"&gt;$i</span> = 0; <span style="color: #800080"&gt;$i</span> < <span style="color: #800080"&gt;$n</span>; ++<span style="color: #800080"&gt;$i</span><span style="color: #000000"&gt;) {
        </span>++<span style="color: #800080"&gt;$this</span>-><span style="color: #000000"&gt;b;
    }
}

</span><span style="color: #0000ff"&gt;function</span> pre_dec_prop(<span style="color: #800080"&gt;$n</span><span style="color: #000000"&gt;) {
    </span><span style="color: #0000ff"&gt;for</span> (<span style="color: #800080"&gt;$i</span> = 0; <span style="color: #800080"&gt;$i</span> < <span style="color: #800080"&gt;$n</span>; ++<span style="color: #800080"&gt;$i</span><span style="color: #000000"&gt;) {
        </span>--<span style="color: #800080"&gt;$this</span>-><span style="color: #000000"&gt;b;
    }
}

</span><span style="color: #0000ff"&gt;function</span> post_inc_prop(<span style="color: #800080"&gt;$n</span><span style="color: #000000"&gt;) {
    </span><span style="color: #0000ff"&gt;for</span> (<span style="color: #800080"&gt;$i</span> = 0; <span style="color: #800080"&gt;$i</span> < <span style="color: #800080"&gt;$n</span>; ++<span style="color: #800080"&gt;$i</span><span style="color: #000000"&gt;) {
        </span><span style="color: #800080"&gt;$this</span>->b++<span style="color: #000000"&gt;;
    }
}

</span><span style="color: #0000ff"&gt;function</span> post_dec_prop(<span style="color: #800080"&gt;$n</span><span style="color: #000000"&gt;) {
    </span><span style="color: #0000ff"&gt;for</span> (<span style="color: #800080"&gt;$i</span> = 0; <span style="color: #800080"&gt;$i</span> < <span style="color: #800080"&gt;$n</span>; ++<span style="color: #800080"&gt;$i</span><span style="color: #000000"&gt;) {
        </span><span style="color: #800080"&gt;$this</span>->b--<span style="color: #000000"&gt;;
    }
}

</span><span style="color: #0000ff"&gt;function</span> isset_prop(<span style="color: #800080"&gt;$n</span><span style="color: #000000"&gt;) {
    </span><span style="color: #0000ff"&gt;for</span> (<span style="color: #800080"&gt;$i</span> = 0; <span style="color: #800080"&gt;$i</span> < <span style="color: #800080"&gt;$n</span>; ++<span style="color: #800080"&gt;$i</span><span style="color: #000000"&gt;) {
        </span><span style="color: #800080"&gt;$x</span> = <span style="color: #0000ff"&gt;isset</span>(<span style="color: #800080"&gt;$this</span>-><span style="color: #000000"&gt;b);
    }
}

</span><span style="color: #0000ff"&gt;function</span> empty_prop(<span style="color: #800080"&gt;$n</span><span style="color: #000000"&gt;) {
    </span><span style="color: #0000ff"&gt;for</span> (<span style="color: #800080"&gt;$i</span> = 0; <span style="color: #800080"&gt;$i</span> < <span style="color: #800080"&gt;$n</span>; ++<span style="color: #800080"&gt;$i</span><span style="color: #000000"&gt;) {
        </span><span style="color: #800080"&gt;$x</span> = <span style="color: #0000ff"&gt;empty</span>(<span style="color: #800080"&gt;$this</span>-><span style="color: #000000"&gt;b);
    }
}

</span><span style="color: #0000ff"&gt;function</span><span style="color: #000000"&gt; g() {
}

</span><span style="color: #0000ff"&gt;function</span> call(<span style="color: #800080"&gt;$n</span><span style="color: #000000"&gt;) {
    </span><span style="color: #0000ff"&gt;for</span> (<span style="color: #800080"&gt;$i</span> = 0; <span style="color: #800080"&gt;$i</span> < <span style="color: #800080"&gt;$n</span>; ++<span style="color: #800080"&gt;$i</span><span style="color: #000000"&gt;) {
        </span><span style="color: #800080"&gt;$this</span>-><span style="color: #000000"&gt;g();
    }
}

</span><span style="color: #0000ff"&gt;function</span> read_const(<span style="color: #800080"&gt;$n</span><span style="color: #000000"&gt;) {
    </span><span style="color: #0000ff"&gt;for</span> (<span style="color: #800080"&gt;$i</span> = 0; <span style="color: #800080"&gt;$i</span> < <span style="color: #800080"&gt;$n</span>; ++<span style="color: #800080"&gt;$i</span><span style="color: #000000"&gt;) {
        </span><span style="color: #800080"&gt;$x</span> = <span style="color: #800080"&gt;$this</span>::<span style="color: #000000"&gt;TEST;
    }
}

}

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读