关于php的文章,一篇关于 PHP 性能的文章

一篇关于 PHP 性能的文章

昨晚清理浏览器收藏夹网址时, 发现了 http://www.phpbench.com/, 想起来应该是 2015 年发现的一个比较性能的文章, 我就点进去看了看, 发现还是全英文耶, 刚好最近一直在读一些英文文档和资料, 就想着把它翻译下来, 以供其他中国开发更有效率的阅读, 好多自我的口语化, 见谅~

PHPBench.com 想用一种直观的方式去陈述一个事实, 让人们明白不是每段 PHP 代码都能以相同的方式运行你可能会对产生的结果感到惊讶, 但是不要怀疑 --it's ok 一些被测试统计过的代码样例的页面也被创建了, 你可以下载然后在自己的服务器环境运行测试, 你可以结合自己的想法, 对这些实例进行一顿操作~~

注意: 你要时刻记住要多刷新几次页面来得到正确的结果, 每次刷新的时候, 数字都会急剧变化, 我认为这是因为 PHP 的内存垃圾回收机制是随机的并且这个机器上其他的进程对此也有影响

注意: 为了方便我就简单的使用了 microtime()函数来测试这用例如果使用了更高级的东西, 我担心一些初级 phper 理解不了

循环读取数据的比较

foreach() vs. for vs. while(list() = each())

循环读取一个哈希数组最好的方式是怎样的?

给出一个含有 100 个元素的哈希数组, 每个键值对是由 24 字节的键名和 10k 的数据组成

ab7653affab982b574eb7acc55df2e04.gif

结论:

上面所有结果中, 我发现, foreach()循环比 while()和 for()强一档的水平有一点值得注意下, 所有样例中每个循环开始的时候我都会使用 reset()

由于之前测试的版本备受争议, 我必须道个歉, 因为我在 while 循环实施 reset()功能的时候是在最开始而不是结束时非常感谢 Anthony Bush 这位老铁发现了这个

修改下循环方式再来一波比较

如果我们改变读取循环的测试, 改变为: 循环读取数组结果后, 对每个元素进行简单的重新赋值它会又怎样一个结果表现呢?

还是给出一个含有 100 个元素的哈希数组, 每个键值对是由 24 字节的键名和 10k 的数据组成

ab7653affab982b574eb7acc55df2e04.gif

结论:

foreach()依然吊打其他两位循环选手

计数循环之间的 PK

for() VS. while()

循环时提前算好循环体的长度有没有必要

比如: "for ($i=0; $i

ab7653affab982b574eb7acc55df2e04.gif

结论:

* 结果让人吃惊... 这在任何程序中都是很容易去实现的一件事情, 也是 PHP 社区普遍认可的基准, 结果表明他们都是为了自己说话

双引号单引号的较量

double (") vs. single (')

PHP 中单引号和双引号效率上是否有区别呢? 比如重复使用 10000 多次时

ab7653affab982b574eb7acc55df2e04.gif

结论:

* 在当前的 PHP 版本中, 这个条件下两边表现都是不俗的让大家在这一点上和谐相处!

变量检测的较量

isSet() vs. empty() vs. is_array()

ab7653affab982b574eb7acc55df2e04.gif

结论:

*isset()和 empty()差不多的, 因此使用变量之前, 尽量检查一波例如: if (isSet($foo) AND is_array($foo))

条件控制结构的较量

switch/case/default vs. if/elseif/else

这两种流程控制结构有啥区别呢?

ab7653affab982b574eb7acc55df2e04.gif

结论:

*switch/case 和 if/elseif 棋逢敌手五五开, 需要注意的是 if/elseif 中用全等 (===) 比相等 (==) 要稍微快一些哦~

字符串输出比较

echo vs. print

ab7653affab982b574eb7acc55df2e04.gif

结论:

* 实际上, echo 和 print 函数 / 结构服务很明确, 因此实现他们的代码差不多值得一提的是: 在使用 echo 时, 用逗号分隔时, 会快一些

来源: https://www.cnblogs.com/guixiaoming/p/8534224.html

Stkcd [股票代码] ShortName [股票简称] Accper [统计截止日期] Typrep [报表类型编码] Indcd [行业代码] Indnme [行业名称] Source [公告来源] F060101B [净利润现金净含量] F060101C [净利润现金净含量TTM] F060201B [营业收入现金含量] F060201C [营业收入现金含量TTM] F060301B [营业收入现金净含量] F060301C [营业收入现金净含量TTM] F060401B [营业利润现金净含量] F060401C [营业利润现金净含量TTM] F060901B [筹资活动债权人现金净流量] F060901C [筹资活动债权人现金净流量TTM] F061001B [筹资活动股东现金净流量] F061001C [筹资活动股东现金净流量TTM] F061201B [折旧摊销] F061201C [折旧摊销TTM] F061301B [公司现金流1] F061302B [公司现金流2] F061301C [公司现金流TTM1] F061302C [公司现金流TTM2] F061401B [股权现金流1] F061402B [股权现金流2] F061401C [股权现金流TTM1] F061402C [股权现金流TTM2] F061501B [公司自由现金流(原有)] F061601B [股权自由现金流(原有)] F061701B [全部现金回收率] F061801B [营运指数] F061901B [资本支出与折旧摊销比] F062001B [现金适合比率] F062101B [现金再投资比率] F062201B [现金满足投资比率] F062301B [股权自由现金流] F062401B [企业自由现金流] Indcd1 [行业代码1] Indnme1 [行业名称1] 季度数据,所有沪深北上市公司的 分别包含excel、dta数据文件格式及其说明,便于不同软件工具对数据的分析应用 数据来源:基于上市公司年报及公告数据整理,或相关证券交易所、各部委、省、市数据 数据范围:基于沪深北证上市公司 A股(主板、中小企业板、创业板、科创板等)数据整理计算
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值