2011-07-21 9 views
0

私は、約500〜1000文字列の文字列を含む単純なデータベースを必要としていますが、約100文字の文字列を更新する必要はなく、ほとんどデータベースを使用します。 突然、代わりに文字列/テキストファイルリソースを使うことができるのだろうかと思います。誰もこれを前に試しましたか?私はこれが通常の物理データベースよりも速くなければならないと仮定していますが、メモリの影響/パフォーマンスのコストはどれくらいかと思います。何かアドバイス?ありがとう。データベースで文字列リソースを使用するC#

答えて

1

これは、文字列の使用方法によって異なります。変更されずにユーザーに公開されない場合は、コード自体で定数として設定するだけで十分です。ここでのメモリ負担は最小限に抑えられます。

これらはユーザーに表示され、アプリケーションによって更新されないラベルまたはメッセージの場合は、文字列テーブルが適切です。これにより、将来的にアプリケーションをローカライズすることもできます。ここで必要とされるメモリは、文字列定数と少なくとも同じで、リソースフレームワークによって構築された配管のオーバーヘッドになります。

これらの文字列がアプリケーション(またはそのユーザー)によって更新される場合は、文字列を外部に格納することで、コード内にプロビジョニングする必要があります。データベース内であれ、XMLファイルであれ(de )シリアライズ、プレーンテキストファイル、またはその他の手段によって。あなたが非常に多くの異なる実装オプションを持っているので、ここではメモリの負荷について話すのは難しいです。

これらの文字列のメモリ負担については、1000文字程度の文字列を(多くても)持つことになります。ちょうどの場合、それを1500と呼びましょう。各文字列は約100文字です。 .NETの文字はUTF-16です。つまり、それぞれ2バイト必要です。これらの前提では、文字列が少なくとも300,000バイト(約300 KB)を占め、文字列オブジェクト自身が取ったメモリを使用できると言うことができます。 .NETフレームワークを使用していることを考えると、この種のメモリは一般的にはあまり価値がないものではありません。

EDIT:パフォーマンスへの影響

は、あなたのCPUは、上記のそれぞれに対して行い、どのくらいの仕事を考えてみて。

定数を使用すると、基本的にポインタがロードされます。

ファイルでは、ファイル名を読み込み、OSにファイルを開き、内容をメモリに読み込み、内容を処理し、必要な文字列を検索するように指示しています。それ以上の作業です!

ここで、データベースに接続するだけで、情報を取得するのではなく、何が起こっているのかを想像してみましょう。

あなたは決してスピードのために定数を打つことはありません。データベースは確かに桁違いに遅れているので、本当に機能が必要な場合を除いては考慮しないでください。ファイルを使った作業は、データベースの作業よりもはるかに高速ですが、定数を使用するよりも遅く、エラーが発生しやすくなります。

+0

うわー、本当にありがとう。アプリケーション内で外部データベースと定数または文字列リソースを使用することの比較については、実際には何も言いませんでした。 –

+0

このデータをどのように使用しているかわからなくても意味のある比較をするのは難しいです。文字列を格納するための「最良の」アプローチのようなものはありません。 – Ben

+0

うわー!ありがとう、追加情報は素晴らしかったです。 –

関連する問題