2011-07-21 21 views
0

我已經在許多情況下,我只想要一個包含約500個簡單的數據庫運行 - 1000串,每個約100個字符,而不需要更新,而且大多我最終使用的數據庫。 因此突然間,我想知道是否可以使用字符串/文本文件資源。有沒有人試過這個?我假設這應該比正常的物理數據庫更快,但我想知道內存影響/性能成本會是什麼樣子。有什麼建議?謝謝。使用字符串資源對數據庫在C#

回答

1

這取決於如何使用字符串。如果它們永遠不會改變,並且永遠不會暴露給用戶,那麼將它們設置爲代碼中的常量就足夠了。這裏的內存負擔很小。

如果這些標籤或用戶將看到,但不會被應用程序更新的消息,則字符串表是適當的。這也使您可以在未來本地化您的應用程序。這裏所需的內存至少和字符串常量一樣多,加上資源框架內置的管道的一些開銷。

如果應用程序(或其用戶)更新這些字符串,則需要在代碼中對此進行規定,方法是在外部存儲字符串 - 無論是在數據庫中還是在XML文件中, )序列化,純文本文件或其他方式。在這裏談論內存負擔很難,因爲你有很多不同的實現選項。

至於這些字符串的記憶負擔:你說你有(最多)某處大約1000串。爲了以防萬一,讓我們慷慨地稱它爲1500。每個字符串大約需要100個字符。 .NET中的字符是UTF-16,這意味着每個字節需要兩個字節。有了這些假設,我們可以說你的字符串將佔用至少300,000字節 - 大約300 KB,允許字符串對象本身佔用內存。考慮到你使用的是.NET框架,這種內存通常不值得仔細研究。

編輯:性能問題

想想你的CPU多少工作確實爲上述各的。

使用常量,它基本上是加載一個指針。

有了文件,你現在談論加載一個文件名,指示OS打開文件,讀取它的內容到內存,處理內容,並找到你想要的字符串。這是更多的工作!

現在想象一下可能涉及簡單地連接到數據庫,更不用說獲取信息出來。

你永遠不會爲了速度而擊敗常量。數據庫肯定會慢幾個數量級,除非你真的需要它們的功能,否則不應該考慮它。使用文件比使用數據庫快得多,但比使用常量仍然更慢,更容易出錯。

+0

哇,非常感謝。你並沒有真正直接說出在應用程序中使用外部數據庫和常量或字符串資源之間的比較。 –

+0

如果不知道如何使用這些數據,很難進行有意義的比較;存儲字符串不存在「最佳」方法。 – Ben

+0

哇!謝謝,附加信息太棒了。 –