我有一個應用程序需要一個大型數據庫(大約3.5 GB),我需要從像DVD這樣的只讀文件系統運行它。所以我的程序在硬盤上運行良好,但從DVD開始非常慢。從DVD開始的應用程序如此緩慢
我的問題是如何優化我的程序在DVD上快速運行?
我有一個應用程序需要一個大型數據庫(大約3.5 GB),我需要從像DVD這樣的只讀文件系統運行它。所以我的程序在硬盤上運行良好,但從DVD開始非常慢。從DVD開始的應用程序如此緩慢
我的問題是如何優化我的程序在DVD上快速運行?
這完全取決於你的意思是什麼樣的數據庫。我會假設它是基於行的。
如果您希望快速讀取數據庫,第一步可能是對數據庫進行排序。這很關鍵,因爲它可以使用二進制搜索非常快速地搜索特定的行。
將3.5GB加載到RAM中搜索DVD需要花費幾乎與DVD一樣長的時間,所以這就是爲什麼您的程序啓動緩慢的原因。考慮製作一個指向某些行位置的索引,如字典中每個字母開頭的頁碼。然後,你只需要加載你的數據庫的一小部分來找到你需要的行。然後,通過按照需求順序加載部分緩慢地在RAM中建立字典(即,如果搜索某些內容,首先加載該部分)。
具體到DVD,沒有多少可以使其加載速度更快。考慮一種流式壓縮類型(GZip也許,C#本身就支持這種類型),以便您更快地獲取數據。
同樣,它完全取決於你在做什麼,這些只是一般性的建議。
剛剛我分裂我的數據庫的一部分,當我需要的一部分數據我將它的數據庫部分加載到內存中, – KF2 2012-08-13 08:29:15
有點明顯,但你有沒有嘗試過製作更小的部分? – AStupidNoob 2012-08-13 08:34:48
我試過但沒有更好的 – KF2 2012-08-13 08:36:42
您將不得不剖析應用程序,沒有銀色的子彈讓您的應用程序加載速度提高了三倍。分析,配置文件,查看導致延遲的數據
您是否在加載期間捕獲並忽略異常? – Steve 2012-08-13 08:14:24
與固定硬盤驅動器甚至大多數USB驅動器相比,DVD(或其他光盤驅動器)固有地介質速度較慢。此外,如果您正在運行只讀數據庫,那麼您將無法執行任何操作,因爲它是處理您對該數據的文件訪問的第三方代碼。你確定你真的必須從DVD運行嗎?例如,您可以從硬盤上的只讀文件夾運行嗎? – 2012-08-13 08:17:29
準確地說我的應用程序是一個學習軟件包,我需要將它運行成DVD。 – KF2 2012-08-13 08:24:40