今天導出報表時,測試同事告訴我數據太大了,沒法導出。我看了下大概只有1500條左右的數據,徹底不大。估計是上午將數據寫入數組時方式不對。修改了下果真ok了。
參考vld用法:http://www.phppan.com/2011/05...
mac下安裝vld擴展:http://blog.csdn.net/njys1/ar...
(第一次記錄文章,還不熟悉排版)php
下面是簡單的還原
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.優先的寫法:fetch
<?php $array = null; $array = ['1','a','3']; ?>
對應的opcode代碼:.net
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,
這種方式每賦值一次須要一步操做,數據量大了區別就很明顯code