請問各位高手:
我開發的出程式每操作一步都往硬碟中寫,上百條的資料讀取、寫入,要很久才能完成。
看到別人開發的軟體速度讀寫資料能達到閃速,且只在退出的時候提示是否保存,這種方法如何實作?
uj5u.com熱心網友回復:
太籠統了,程式的瓶頸只有實際測驗才能找到,而優化代碼更是要字斟句酌。如果問題在硬碟讀寫方面,不妨先寫快取,再找出程式的空閑間隙寫;在執行緒中寫硬碟;
另外寫的機制是什么,是事先建立大的空檔案寫呢,還是每次建立與寫新檔案,這些都會造成很大的不同
uj5u.com熱心網友回復:
這個問題,是程式必須面對的問題。應該是代碼完成的重要因素。一、程式涉及速度
1、程式啟動的速度。初始化、連接網路讀取資料、程式更新.....
2、打開新的表單(頁面)速度。讀取初始引數
3、運行中的速度。 本地硬碟讀寫資料、運程網路資料(讀寫)
4、程式退出的速度。保存本地設定引數、更新運程資料。
二、要養成良好的習慣
1、本地INI檔案讀取速度比較慢,盡量少用;
2、資料的讀取,在不影響準確度(同步)的前題下,使用快取。
3、量較大的資料讀取,使用執行緒;
4、資料讀寫時間大于1秒的,顯示進度,緩解用戶的等待焦點。
5、代碼中,應刻意減少讀寫讀寫次數。
三、采取必要的技術手段 (略 因人而異)
uj5u.com熱心網友回復:
執行緒可以處理很多比較復雜的程序,也可以提高軟體的運行速度,當然也要合理的運用。代碼優化也是不可缺少的;
程式中的程序、函式的相關演算法也是要考慮的,一個好的演算法相當重要。
uj5u.com熱心網友回復:
加入快取的機制吧uj5u.com熱心網友回復:
摟主用的資料庫吧,換成自定義檔案結構就好了,配合FileMapping及記憶體快取就秒操作了uj5u.com熱心網友回復:
一定程度上應用快取,比如5分鐘存一次,這樣免得存取太多,同時如果發生死機還是很容易恢復的。uj5u.com熱心網友回復:
通過執行緒定時保存資料,也是一個好的辦法。uj5u.com熱心網友回復:
每操作一步都往硬碟中寫該往一個記憶體陣列或stringlist里寫,每多少時間或積累了多少行了,才實際寫盤一次
uj5u.com熱心網友回復:
LZ是不是直接再檔案中讀取資料,然后嘛當修改后的資料要寫回去的時候,由于檔案只能順序讀寫,只好重寫整個資料檔案,結果導致速度變慢?如果這樣的話,為什么不考慮使用資料庫呢?轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/86058.html
標籤:語言基礎/算法/系統設計
上一篇:delphi 使用json
