[請益] 如何在PHP中建立龐大的陣列

看板PHP作者 (~月瓏~)時間16年前 (2009/09/23 21:36), 編輯推噓7(7016)
留言23則, 13人參與, 最新討論串1/1
因為某些因素,所以必須在PHP中建立大概一百萬乘一百萬的陣列 我實際測試過好像五千乘五千就不太行了 不知道是不是有函式庫或是方法能夠解決這個問題@@? 如果沒有的話,最大的極限是多少呀@@ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.127.208.228

09/23 21:39, , 1F
麻煩你自己算一下一百萬乘一百萬最少要吃多少記憶體
09/23 21:39, 1F

09/23 22:22, , 2F
拿任何一套都沒辦法達到吧...
09/23 22:22, 2F

09/23 22:49, , 3F
現在記憶體最多到16G而已,就算每個元素1byte,也要
09/23 22:49, 3F

09/23 22:49, , 4F
1000G,更何況不只1個BYTE
09/23 22:49, 4F

09/23 22:49, , 5F
應該用資料庫的觀念來實作你的問題。
09/23 22:49, 5F

09/23 22:56, , 6F
我用C去宣告的話,可以宣告到2萬*2萬 但是用php好像無
09/23 22:56, 6F

09/23 22:57, , 7F
法宣告的跟C一樣多耶,測過5千*5千就掛了說,是不是能
09/23 22:57, 7F

09/23 22:57, , 8F
讓他在更多??或是跟C一樣多呢?
09/23 22:57, 8F

09/24 00:10, , 9F
沒辦法就是沒辦法 , 你需要改變你的做法
09/24 00:10, 9F

09/24 00:26, , 10F
你去買一恆河沙的記憶體插到你的電腦裡就可以..
09/24 00:26, 10F

09/24 00:31, , 11F
不要用鈍斧削鉛筆,或用鉛筆刀砍樹。
09/24 00:31, 11F

09/24 01:41, , 12F
如果你有64G的記憶體 最多可以裝68719476736 bytes
09/24 01:41, 12F

09/24 01:41, , 13F
但你每筆資料不只1byte吧 PHP本身的資料結構又吃更多
09/24 01:41, 13F

09/24 01:43, , 14F
就算你的資料都1byte 也要13位數 64G只有11位數喔
09/24 01:43, 14F

09/24 01:49, , 15F
這種size的東西通常是開mmap來做吧
09/24 01:49, 15F

09/24 08:11, , 16F
php.ini 裡面要設定可以吃多少記憶體
09/24 08:11, 16F

09/24 08:11, , 17F
memory_limit = 128M ; 你可以改大一點
09/24 08:11, 17F

09/24 10:02, , 18F
有甚麼原因要建立1M*1M的陣列? 也許有比較好的做法
09/24 10:02, 18F

09/24 10:48, , 19F
你應該試試MPI
09/24 10:48, 19F

09/24 10:48, , 20F
不過PHP沒有mpi函示庫 c 跟 fortran有
09/24 10:48, 20F

09/24 18:14, , 21F
調整思考方向 這種龐然大物應該用資料庫去作
09/24 18:14, 21F

09/24 21:35, , 22F
用MATLAB不是比較好= =,專門用來做陣列的
09/24 21:35, 22F

09/25 21:19, , 23F
MATLAB+1
09/25 21:19, 23F
文章代碼(AID): #1AkYHlDr (PHP)
文章代碼(AID): #1AkYHlDr (PHP)