2010-01-12 151 views
2

我現在正在一個網站上工作,並且有一個專注於加載,處理等的效率和速度。對象與陣列

我使用mysqli擴展來獲得我的數據庫位和鮑勃,但我想知道什麼是輸出我的數據集的最佳/最有效的方式?

目前我使用$ mysqli-> fetch_assoc()和foreach()。閱讀http://www.phpbench.com我知道,統計我的數據首先會有所作爲。 (我打算在構建後進行優化)

我的問題是,將結果集導入到php數據中更快。創建一個對象?數組數組?一個關聯數組?我的想法是一個對象,但我不確定。

只是好奇,因爲我不熟悉PHP內部:)

回答

5

有實際上是PHP文件中一個小的基準下mysql_fetch_object的評論:

SELECT * FROM bench... (mysql_fetch_object) 

查詢時間: 5.40725040436
擷取時間:16.2730708122(平均:1.32130565643E-5)
總時間:21.6803212166

SELECT * FROM bench... (mysql_fetch_array) 

查詢時間:5.37693023682
擷取時間:10.3851644993(平均:7.48886537552E-6)
總時間:15.7620947361

SELECT * FROM bench... (mysql_fetch_assoc) 

查詢時間:5.345921278
擷取時間:10.6170959473(平均分:7.64049530029E-6)
總時間:15.9630172253

抓取一個目的是最慢的,取出一個數值陣列是可能有點比使用mysql_fetch_arraymysql_fetch_assoc更快,但不同的是可以忽略不計。實際上,mysql_fetch_array同時提取assoc和numeric,並且它的速度比mysql_fetch_assoc快,但是如果你在性能之後,就不要使用mysql_fetch_object

0

我相信一個數值數組可能是最輕量級的,其次是關聯數組,然後是一個對象。我認爲差異不會太大,因此無論您使用哪種語法最適合。

1

mysql_fetch_object()

說明手冊頁:性能

速度明智的,功能是相同的mysql_fetch_array(),和幾乎一樣快 和mysql_fetch_row()(的區別是微不足道的)

正如Tatu給出的基準提示,有一個細微的差異,但請記住數字已經從連續的100個查詢累計。我會說你現在不打擾並稍後優化的策略是一個不錯的選擇。