推 LPH66: 你輸入 size = 10000, 往上會取到 n = 16384 05/01 00:44
→ LPH66: size * n 的 int 陣列會吃掉 625M, 這用的有一點凶 05/01 00:46
→ LPH66: 用一維直接寫不是不行, 你要思考你的計算順序跟列印順序 05/01 00:47
→ LPH66: 說不定不止可以拿掉一維 05/01 00:48
我是實驗需要跑大量模組,輸入值需要到100000,每個ROW計算出一個COST,再經由
COLUMN判斷,目前ROW已經想到怎麼應用,不過COLUMN目前沒有想到要怎應用到QAQ
→ Killercat: 如果不見得每個column都會需要 那可以考慮lazy eval 05/01 00:53
→ Killercat: 以及proxy class來避免真的new出那麼多不必要的空洞 05/01 00:55
→ Killercat: 另外int其實以大陣列來講 實在也是太巨大了點 05/01 00:56
→ Killercat: 在ia64裡面 int基本上跟long是一樣長的 請改用short 05/01 00:57
→ Killercat: 甚至char(bool就免了 沒啥幫助的) 05/01 00:57
→ Killercat: 真的在不行 就自己實作一個DAO來自己土炮存取方式 05/01 00:58
→ Killercat: 幾乎所有的big number lib都是這樣做的 05/01 00:59
※ 編輯: hao1130 (1.162.93.137), 05/01/2015 10:19:51
推 EdisonX: 你的方陣裡存的不是 1 就是 2 兩種狀態 , 所以其實可以用 05/01 12:52
→ EdisonX: bitwise 方式做法 , 甚至它跑出來的結果都是呈現區塊狀, 05/01 12:53
→ EdisonX: 要設計特殊的資料結構去省空間應該是有機會的。 05/01 12:53
→ EdisonX: 不過... 怎麼這拉丁方陣和我在 wiki 查的不一樣 @@ 05/01 13:22
推 EdisonX: 算了一下 , 這實驗數值 100,000 應該是之前有人算過的 05/01 13:39
→ EdisonX: 用 vector< bitset<100000> > 大小約 1.53~1.55 G 左右 05/01 13:40
→ EdisonX: 在 32bits OS 下應是剛好用 . 05/01 13:41