2013-02-25 25 views
1

我正在初始化一個龐大的數組(數組將不會再被更改) $ boardkey_to_values = Array(97031 => 0,97531 => 1,409531 = > 2,410031 => 3,410131 => 4,472031 => 5,472531 => 6,472631 => 7,472651 => 7,484531 => 8,485031 => 9,485151 => 10,485131 = > 10,......)初始化一個巨大的數組(50000個條目)

事情是這樣需要大量的時間編譯器(在40毫秒平均)

我想,如果他們可能是一個更快的解決方案。

我在我的程序中使用了一大組鍵(15-35k)。我以前在用where_in的時候使用過MySQL,但是它的速度更慢(平均6秒),我給了它硬編碼的建議,事實上,它速度更快,但我想更優化它。看到原始文章String to Value compare Optimizing MySQL Query

+5

它可能會更快的數據存儲在一個數據庫,並且只加載您需要的時候你需要他們的具體條目 – 2013-02-25 09:40:58

+2

你從哪裏得到數據庫或文件的原始數組? – Baba 2013-02-25 09:41:24

+3

取決於您打算如何處理數組。你能給一些背景嗎? – 2013-02-25 09:46:21

回答

4

對於這樣一個大型陣列40毫秒是不是非常慢。但是,如果這是在網絡上,並且多人在呼叫PHP頁面,那可能會降低服務器的速度。您有幾種選擇:

  • 使用多個Ajax調用,來填充您的陣列,該頁面已經呈現,即套10000 每隔幾秒鐘後(這樣你就可以在頁面上做其他的東西,讓 該陣列在其自己的時間填充)

  • 使用數據庫,因爲它將更快地搜索/更新,而不是 將其存儲在數組中。

  • 將程序邏輯更改爲一次只能使用幾個值,而不是其中的幾個值,即 。 (有點像分頁,其中每頁只顯示數據的子集)

+0

我認爲最好的辦法是想法分頁,因爲我可能會找到一種分頁方式 – edi9999 2013-02-25 10:35:00

+0

是的,這是SQL視圖和限制發揮作用,以獲得最佳性能。看到網站每頁顯示10,20,50,100條記錄的情況並不少見,並且您可以從中獲得最大的好處(低帶寬,低sql搜索次數,低處理率和低服務器負載),並且會強制用戶過濾更多。 – Husman 2013-02-25 10:41:32