php数组批量赋值_PHP中数组赋值性能及过程

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

参考vld用法:http://www.phppan.com/2011/05...

mac下安装vld扩展:http://blog.csdn.net/njys1/ar...

(第一次记录文章,还不熟悉排版)

下面是简单的还原

1.性能底下的写法:

$array = null;

$array[]='1';

$array[]='a';

$array[]='3';

?>

使用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.优先的写法:

$array = null;

$array = ['1','a','3'];

?>

对应的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,

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值