2010-10-13 64 views
0

現在我知道這個話題有一些相關的問題,但這有點獨特。PHP:陣列深度將如何影響性能?

我有兩個陣列結構:

array(
    [0] => array(
     'stat1' => 50, 
     'stat2' => 12, 
     'stat3' => 0, 
     'country_name' => 'United States' 
     ), 
    [1] => array(
     'stat1' => 40, 
     'stat2' => 38, 
     'stat3' => 15, 
     'country_name' => 'Ireland' 
     ), 
    [2] => array(
     'stat1' => 108, 
     'stat2' => 0, 
     'stat3' => 122, 
     'country_name' => 'Autralia' 
     ) 
    ) 

和第二

array(
    'stat1' => array(
     'countries' => array(
      'United States' => 50, 
      'Ireland' => 40, 
      'Autralia' => 108, 
      ) 
     ) 
    ), 
'stat2' => array(
     'countries' => array(
      'United States' => 12, 
      'Ireland' => 38, 
      ) 
     ) 
    ), 
etc... 

第二陣列可以去,甚至到4級或5,如果你添加這些各自國家的城市。進一步要注意的是,第二個數組結構將不會有0個數據字段(請注意,第二個數組字段不存在,因爲它是0),但第一個結構將會有一整個零。另外請注意,第二個結構將有重複,即'美國'

我的問題是這些:這些數組結構如何比較它們是json_encode()並在POST ajax請求中使用?淺層深度數組是否會更快,或者更好的結構化數組在大小方面會更好?

+0

對不起,但長期的問題,我想清楚地表達我的問題 – 2010-10-13 14:34:06

+0

你是什麼意思? JSON字符串的長度?這裏是一個例子:http://codepad.org/fIka8aFq。您應該選擇在服務器和客戶端更容易處理的結構。例如,如果你想要遍歷所有的國家,第一個結構是好的。但是,如果你想獲得特定的國家,比如所有對'stat1'有價值的國家,那麼第二個國家更合適。你可能甚至不需要嵌套數組,'stat1'=> array('United States'=> 50,'Ireland'=> 40,'Autralia'=> 108)'也可能不錯。 – 2010-10-13 15:26:53

+2

如果兩者之間的差異對性能有顯着影響,我會很驚訝,它們是最佳的微型優化。你可能會更好 - 並且可以獲得更多的速度 - 以最簡單/高效的格式爲使用該json編碼數據的代碼提供數據。 – Wrikken 2010-10-13 16:30:17

回答

1

我已經做了一些測試,對於有限的數據集,兩者之間的輸出數據差異(我將數據輸出到文本文件中)實際上並不重要。

陣列結構1 - 所有城市和國家數據輸出到68KB

陣列結構2 - 所有城市和國家數據輸出到71KB

因此,有一個細微的差別,但似乎考慮到數據採用JSON格式並用於向Google可視化geomap API發送的AJAX請求時,差異不顯着。

我沒有測試加載差異的微觀時間,但用戶看0.0024微秒的加載.gif圖像(我爲了爭論而拍攝一個隨機時間)不會產生大的凹痕在可用性方面。謝謝你所有的意見