资讯专栏INFORMATION COLUMN

PHP中数组赋值性能及过程

Yumenokanata / 3550人阅读

摘要:今天导出报表时,测试同事告诉我数据太大了,无法导出。我看了下大概只有条左右的数据,完全不大。估计是上午将数据写入数组时方式不对。修改了下果然了。

今天导出报表时,测试同事告诉我数据太大了,无法导出。我看了下大概只有1500条左右的数据,完全不大。估计是上午将数据写入数组时方式不对。修改了下果然ok了。
参考vld用法:http://www.phppan.com/2011/05...
mac下安装vld扩展:http://blog.csdn.net/njys1/ar...
(第一次记录文章,还不熟悉排版)

下面是简单的还原
1.性能底下的写法:


使用vld查看opcode的代码:

function name:  (null)
number of ops:  8
compiled vars:  !0 = $array
line     #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   2     0  E >   ASSIGN                                                   !0, null
   3     1        ASSIGN_DIM                                               !0
         2        OP_DATA                                                  "1", $2
   4     3        ASSIGN_DIM                                               !0
         4        OP_DATA                                                  "a", $4
   5     5        ASSIGN_DIM                                               !0
         6        OP_DATA                                                  "3", $6
   6     7      > RETURN                                                   1

branch: #  0; line:     2-    6; sop:     0; eop:     7; out1:  -2
path #1: 0, 

显然这种方式每赋值一次需要两步操作

2.优先的写法:


对应的opcode代码:

function name:  (null)
number of ops:  6
compiled vars:  !0 = $array
line     #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   2     0  E >   ASSIGN                                                   !0, null
   3     1        INIT_ARRAY                                       ~1      "1"
         2        ADD_ARRAY_ELEMENT                                ~1      "a"
         3        ADD_ARRAY_ELEMENT                                ~1      "3"
         4        ASSIGN                                                   !0, ~1
   4     5      > RETURN                                                   1

branch: #  0; line:     2-    4; sop:     0; eop:     5; out1:  -2
path #1: 0,

这种方式每赋值一次需要一步操作,数据量大了区别就很明显

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22333.html

相关文章

  • php性能怎么优化?php性能优化安全策略

    摘要:性能问题一般不会超过占整个项目性能的,一般在。内置函数的性能优劣。几乎与在函数中调用局部变量的速度相当。递增一个全局变量要比递增一个局部变量慢倍。类似的方法调用所花费的时间接近于次的局部变量递增操作。 php性能怎么优化?性能是网站运行是否良好的关键因素, 网站的性能与效率影响着公司的运营成本及长远发展,编写出高质高效的代码是我们每个开发人员必备的素质,也是我们良好...

    番茄西红柿 评论0 收藏2637
  • task0002(一)- JavaScript数据类型语言基础

    摘要:不过让流行起来的原因应该是是目前所有主流浏览器上唯一支持的脚本语言。经过测试,数字字符串布尔日期可以直接赋值,修改不会产生影响。再考虑对象类型为或者的情况。对于结果声明其类型。判断对象的类型是还是,结果类型更改。 转载自我的个人博客 欢迎大家批评指正 1. 第一个页面交互 这里最需要学习的老师的代码中,每一部分功能都由函数控制,没有创建一个全部变量。且最后有一个函数来控制执行代码...

    elarity 评论0 收藏0
  • PHP入门

    摘要:运行在浏览器端。未来软件的大趋势。相同点为语言结构,不是函数输出一个或者多个变量的类型,长度及值一般用于打印复杂变量结合标记格式化输出如数组对象等输出变量的值。一般用于打印变量。中认为变量的值为时,变量虽然定义了,但是无实际的意义。 PHP目录======== php介绍 2 基础 31 运算符 70 流程控制 77 函数 91 文件引入 100 ...

    abson 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<