今天导出报表时,测试同事告诉我数据太大了,无法导出。我看了下大概只有1500条左右的数据,完全不大。估计是上午将数据写入数组时方式不对。修改了下果然ok了。
参考vld用法:http://www.phppan.com/2011/05...
mac下安装vld扩展:http://blog.csdn.net/njys1/ar...
(第一次记录文章,还不熟悉排版)
下面是简单的还原
1.性能底下的写法:
<?php
$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.优先的写法:
<?php
$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,
这种方式每赋值一次需要一步操作,数据量大了区别就很明显