PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 七嘴八舌異言堂
帳戶
密碼
 

  回應
 
主題工具
commando001
Master Member
 
commando001的大頭照
 

加入日期: Nov 2010
文章: 2,414
程式設計問題:暫存檔問題

事情是這樣的

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

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

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

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

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

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

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

或是有其他解決方法?
     
      
__________________
新。弱弱的戰績
舊 2014-11-28, 02:14 PM #1
回應時引用此文章
commando001離線中  
supermaxfight
Golden Member
 
supermaxfight的大頭照
 

加入日期: Jun 2002
您的住址: 地獄18層
文章: 3,265
根據以往的經驗
知道"結果要什麼",然後再去尋找解答的方法
老師講的建議,聽聽就好
 
__________________
徵你不要的AM4 CPU
徵你不要的SATA接頭斷裂SSD
舊 2014-11-28, 02:18 PM #2
回應時引用此文章
supermaxfight離線中  
傳說
Amateur Member
 

加入日期: Jun 2002
您的住址: 太陽系
文章: 32
假設計算用電腦的記憶體
1.小於38GB,那麼系統可能已經實現你的要求
2.大於38GB,那你特別把它寫到硬碟上純粹浪費I/O效能...
既然大多數時間用不到
那為什麼不是修改程式於使用前再輸出這個矩陣?
舊 2014-11-28, 02:33 PM #3
回應時引用此文章
傳說離線中  
27681049
Advance Member
 

加入日期: Jul 2012
您的住址: 新竹
文章: 409
如果只是把記憶體內容丟到檔案.

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

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

此文章於 2014-11-28 02:35 PM 被 27681049 編輯.
舊 2014-11-28, 02:33 PM #4
回應時引用此文章
27681049離線中  
oversky.
Junior Member
 

加入日期: Feb 2013
文章: 779
矩陣每個元素都有非零的值嗎?
matlab 對 sparse martrix 有特別的用法。
舊 2014-11-28, 02:33 PM #5
回應時引用此文章
oversky.離線中  
gaha
Registered User
 

加入日期: Jul 2014
文章: 0
序列化

java,.net,c++之類的高階語言都有現成的API
就算是c,也可以用記憶體指標以byte為單位做出類似的功能
舊 2014-11-28, 02:34 PM #6
回應時引用此文章
gaha離線中  
f3346
Master Member
 
f3346的大頭照
 

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


這句巴了好多老師的臉
舊 2014-11-28, 02:46 PM #7
回應時引用此文章
f3346離線中  
潛水族
Advance Member
 

加入日期: Apr 2001
文章: 465
引用:
作者27681049
如果只是把記憶體內容丟到檔案.

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

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

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

最佳化(優化),後續再處理,不要本末倒置
其實不最佳化也可以,現在硬體很便宜,或用系統本身功能如cache,ssd就可以
__________________
ps.請看簽名,不準砲我
#相信政府
#相信黨
#台灣價值好棒棒
潛水~~~潛水~~~
舊 2014-11-28, 03:10 PM #8
回應時引用此文章
潛水族離線中  
LR2001
Major Member
 

加入日期: Dec 2000
文章: 125
將你 GOOGLE 來的程式,增添或修改成具備緩衝區
功能的虛擬陣列,保留 64K RAM當緩衝區,直接用
陣列索引當雜湊值,全陣列置入 SSD,結案。
舊 2014-11-28, 03:10 PM #9
回應時引用此文章
LR2001離線中  
27681049
Advance Member
 

加入日期: Jul 2012
您的住址: 新竹
文章: 409
引用:
作者潛水族
二進位暫存檔案是正解,先解決問題.

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

最佳化!!!
好令我感動的用語
...優化 ,優化 ... 我怎麼聽都不習慣...
舊 2014-11-28, 03:14 PM #10
回應時引用此文章
27681049離線中  


    回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是09:09 PM.


vBulletin Version 3.0.1
powered_by_vbulletin 2025。