PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   七嘴八舌異言堂 (https://www.pcdvd.com.tw/forumdisplay.php?f=12)
-   -   程式設計問題:暫存檔問題 (https://www.pcdvd.com.tw/showthread.php?t=1064703)

commando001 2014-11-28 02:14 PM

程式設計問題:暫存檔問題
 
事情是這樣的

我的研究有一部分是寫一個齒輪受力分析程式做數值解

現在的問題是他會輸出一個求解用矩陣(倍精度浮點數陣列)

這個矩陣太大了(佔記憶體 38GB)

但實際上這個矩陣在大部份的時間都用不到,放在記憶體內很浪費

老師希望可以找出方法可以保留陣列型態的方式把他暫存在硬碟中

但目前google到的都是轉成文字檔寫入檔案(C++ VB Delphi...)

不知道有沒有其他語言有支援這種功能的?

或是有其他解決方法?

supermaxfight 2014-11-28 02:18 PM

根據以往的經驗
知道"結果要什麼",然後再去尋找解答的方法
老師講的建議,聽聽就好

傳說 2014-11-28 02:33 PM

假設計算用電腦的記憶體
1.小於38GB,那麼系統可能已經實現你的要求
2.大於38GB,那你特別把它寫到硬碟上純粹浪費I/O效能...
既然大多數時間用不到
那為什麼不是修改程式於使用前再輸出這個矩陣?

27681049 2014-11-28 02:33 PM

如果只是把記憶體內容丟到檔案.

樓主似乎把問題複雜了.
開個二進位的暫存檔案寫進去就好了.
想寫什麼就寫什麼.

如果矩陣大部分是零,寫檔之前找個簡單的壓縮程式壓一下就好了.

oversky. 2014-11-28 02:33 PM

矩陣每個元素都有非零的值嗎?
matlab 對 sparse martrix 有特別的用法。

gaha 2014-11-28 02:34 PM

序列化

java,.net,c++之類的高階語言都有現成的API
就算是c,也可以用記憶體指標以byte為單位做出類似的功能

f3346 2014-11-28 02:46 PM

引用:
作者supermaxfight
根據以往的經驗
知道"結果要什麼",然後再去尋找解答的方法
老師講的建議,聽聽就好


這句巴了好多老師的臉 :laugh:

潛水族 2014-11-28 03:10 PM

引用:
作者27681049
如果只是把記憶體內容丟到檔案.

樓主似乎把問題複雜了.
開個二進位的暫存檔案寫進去就好了.
想寫什麼就寫什麼.

如果矩陣大部分是零,寫檔之前找個簡單的壓縮程式壓一下就好了.

二進位暫存檔案是正解,先解決問題.

最佳化(優化),後續再處理,不要本末倒置:)
其實不最佳化也可以,現在硬體很便宜,或用系統本身功能如cache,ssd就可以:)

LR2001 2014-11-28 03:10 PM

將你 GOOGLE 來的程式,增添或修改成具備緩衝區
功能的虛擬陣列,保留 64K RAM當緩衝區,直接用
陣列索引當雜湊值,全陣列置入 SSD,結案。

27681049 2014-11-28 03:14 PM

引用:
作者潛水族
二進位暫存檔案是正解,先解決問題.

最佳化(優化),後續再處理,不要本末倒置:)
其實不最佳化也可以,現在硬體很便宜,或用系統本身功能如cache,ssd就可以:)

最佳化!!!
好令我感動的用語
...優化 ,優化 ... 我怎麼聽都不習慣...
:cry: :cry: :cry: :cry: :cry:


所有的時間均為GMT +8。 現在的時間是02:33 AM.

vBulletin Version 3.0.1
powered_by_vbulletin 2025。