私は、約500〜1000文字列の文字列を含む単純なデータベースを必要としていますが、約100文字の文字列を更新する必要はなく、ほとんどデータベースを使用します。 突然、代わりに文字列/テキストファイルリソースを使うことができるのだろうかと思います。誰もこれを前に試しましたか?私はこれが通常の物理データベースよりも速くなければならないと仮定していますが、メモリの影響/パフォーマンスのコストはどれくらいかと思います。何かアドバイス?ありがとう。データベースで文字列リソースを使用するC#
答えて
これは、文字列の使用方法によって異なります。変更されずにユーザーに公開されない場合は、コード自体で定数として設定するだけで十分です。ここでのメモリ負担は最小限に抑えられます。
これらはユーザーに表示され、アプリケーションによって更新されないラベルまたはメッセージの場合は、文字列テーブルが適切です。これにより、将来的にアプリケーションをローカライズすることもできます。ここで必要とされるメモリは、文字列定数と少なくとも同じで、リソースフレームワークによって構築された配管のオーバーヘッドになります。
これらの文字列がアプリケーション(またはそのユーザー)によって更新される場合は、文字列を外部に格納することで、コード内にプロビジョニングする必要があります。データベース内であれ、XMLファイルであれ(de )シリアライズ、プレーンテキストファイル、またはその他の手段によって。あなたが非常に多くの異なる実装オプションを持っているので、ここではメモリの負荷について話すのは難しいです。
これらの文字列のメモリ負担については、1000文字程度の文字列を(多くても)持つことになります。ちょうどの場合、それを1500と呼びましょう。各文字列は約100文字です。 .NETの文字はUTF-16です。つまり、それぞれ2バイト必要です。これらの前提では、文字列が少なくとも300,000バイト(約300 KB)を占め、文字列オブジェクト自身が取ったメモリを使用できると言うことができます。 .NETフレームワークを使用していることを考えると、この種のメモリは一般的にはあまり価値がないものではありません。
EDIT:パフォーマンスへの影響
は、あなたのCPUは、上記のそれぞれに対して行い、どのくらいの仕事を考えてみて。
定数を使用すると、基本的にポインタがロードされます。
ファイルでは、ファイル名を読み込み、OSにファイルを開き、内容をメモリに読み込み、内容を処理し、必要な文字列を検索するように指示しています。それ以上の作業です!
ここで、データベースに接続するだけで、情報を取得するのではなく、何が起こっているのかを想像してみましょう。
あなたは決してスピードのために定数を打つことはありません。データベースは確かに桁違いに遅れているので、本当に機能が必要な場合を除いては考慮しないでください。ファイルを使った作業は、データベースの作業よりもはるかに高速ですが、定数を使用するよりも遅く、エラーが発生しやすくなります。
- 1. android.content.res.Resources $ NotFoundException:文字列リソースID#0x2データベース
- 2. JSONデータベースから文字列用の文字列を使用
- 3. 複数のリソース文字列配列を使用するAutoCompleteTextView
- 4. NativescriptのAndroidでi18n文字列リソースを使用する
- 5. android Javaクラスで文字列リソースを使用する方法
- 6. マネージコードからアンマネージdllでリソース文字列テーブルを使用する
- 7. リソース$ NotFoundException:文字列リソースID
- 8. パッケージ名にリソース文字列を使用できますか?
- 9. リソースRobolectricを使用した文字列配列の$ NotFoundException
- 10. protobuf-Cでの文字列の使用
- 11. C++での文字列ライブラリの使用
- 12. VB6の文字列配列をC#で使用する
- 13. リソース[C#]に文字列値を保存します。EDIT:リソースではなくProperties.Settings
- 14. C#リソース文字列にプレースメント変数を追加する方法
- 15. 「エクストラクト文字列リソース」を使用する方法と使用方法
- 16. マスタースレーブ接続文字列をC# - MySQLデータベース
- 17. エクスポートされたリソースを使用して配列/文字列を構築する
- 18. リソースに文字列を保存する
- 19. WPFリソース文字列を追加する
- 20. C# - 埋め込みリソースへのパス文字列(検索用ではない)GUIテストで使用するため
- 21. 文字列リソースのTurksh文字
- 22. Androidの文字列リソースにアクセスできない:android.content.res.Resources $ NotFoundException:文字列リソースID
- 23. Visual C++ 2010でリソース文字列を開く方法は?
- 24. Xcode 7を使用してiOSフレームワークの文字列+リソースをローカライズ
- 25. 再帰を使用してC++で文字列をアンマウントする
- 26. リソース文字列を使用したDisplayFormatデータアノテーション
- 27. C#のテキストボックスで部分文字列を使用する
- 28. C++インラインアセンブリコードで文字列を使用するには?
- 29. 文字列を使用してCでテキストファイルに出力する
- 30. Windows8 - C#でローカライズされた文字列を使用する
うわー、本当にありがとう。アプリケーション内で外部データベースと定数または文字列リソースを使用することの比較については、実際には何も言いませんでした。 –
このデータをどのように使用しているかわからなくても意味のある比較をするのは難しいです。文字列を格納するための「最良の」アプローチのようなものはありません。 – Ben
うわー!ありがとう、追加情報は素晴らしかったです。 –