1

我試圖處理VB.NET中的大量數據的頻繁檢查。每次使用VB.NET存儲在變量中或從文件中讀取?

每當我的應用程序的輸入發生變化時,我都需要檢查這麼大的數量,這也經常發生。

以下哪項更智能,更快?

  1. 在應用程序啓動時讀取文件並全部填入變量集合?

    應用負載:load the file然後for each line in file add to array mycollection(所以文件將只加載一次)
    請求檢查:for each in mycollection if = Something then do stuff(每個請求只檢查是否有收集)

    • 這對我來說似乎更快,因爲我不需要在每個請求中加載所有數據。但是,由於集合變量包含大量字符串,應用程序的內存消耗會更高?!?
  2. 在每次請求時讀取文件?

    請求檢查:與1相同,但每次都請求。 (對每個請求讀取文件和比較)

    • 情人內存使用情況,但速度較慢,如果我沒看錯的。

我想避免微軟SQL Server

有沒有更好的方法?

+0

你的檔案有多大?記住事情總是最好的。您可以嘗試緩存它們,並在一段時間後清除緩存。 – Neolisk

+0

一開始它很小,但如果沒有在收集中找到,然後收集變得更大:)希望這解釋你們所有 – osdTech

+0

這將有助於知道至少數量級。 1KB,1MB,1GB?也請解釋你的收藏的性質以及它爲什麼在增長。可能是你的解決方案在於更好的設計。 – Neolisk

回答

1

不知道究竟是什麼包含在文件或多大它是,但是從你的描述假設有文件中的數據的一些邏輯上的劃分,我會解決這個問題的方法如下:

在啓動時,根據文件內數據的邏輯劃分將文件分成多個較小的文件,並以與您需要執行的搜索相關的方式進行命名。

將文件分開後,您可以實現一種滾動緩存機制,在該緩存機制中,您可以在內存中保留10個小文件,並且在需要未緩存的信息時,刪除最少使用的文件並加載新文件in。

這樣你最終在內存使用和性能之間取得平衡。

+0

,我雖然也但如果有10,000個文件或更多?當我請求文件時,窗口將如何處理?或者如果我分裂在文件夾,然後在文件夾內每個文件夾100個文件再次同樣的問題會使用戶窗口(OS)較慢,而它搜索10K之間的1個文件? – osdTech

+0

如果您提供與其中包含的數據相關的文件或文件夾名稱,則可以將文件檢索限制爲特定文件或一組文件。在這種情況下,您不必爲文件名稱加載OS。或者,您可以使用可用於搜索的信息在內存中保留文件名的索引。因此,您需要首先搜索內存中的索引,然後檢索包含所需數據的特定文件或文件。 –

+0

thx尋求幫助和建議:) – osdTech

0

我建議你,至少一試,NoSQL Database。想知道你的問題,我相信一個NoSQL數據庫可以讓你的數據保持在磁盤上並保持性能(緩存)和可擴展性。

MongoDB是一個很好的入門產品,包括它的在線shell,你可以試試看。

+0

我寧願不使用任何第三方的東西,包括他們的圖書館等。 – osdTech

相關問題