2012-02-12 12 views
0

VB.netをコードとする小規模なWPFアプリケーションがありますが、コードを追加する際に特定の機能を追加したいのですが、パフォーマンスが心配です。私は本当にあなたがこれに関する初心者に優しい記事を含めることができれば本当に感謝しますが、私は安心できるように助けてください...WPFアプリケーションでのメモリ使用量の追跡と管理方法(BEGINNER SCOPE)

1)私のアプリは "リアルタイム"データを表示するためにサードパーティのデータベースと対話しますユーザに提供する。私の提案する方法は、バックグラウンドワーカーを作成して30秒ごとにデータベースに照会し、データを表示することです。私は約2,000のレコードをすべての整数型に照会し、それらをデータセットに格納し、LINQを使用して、WPFコントロールがバインドされている可観測コレクションのサブセットを作成します。

これはあまりにも集中的ですか?私はどのくらいのメモリを使用して、long intの2,000レコードを使用していますか? 30秒ごとに課金しているバックグラウンドワーカーに照会していますか?それは最終的にクラッシュするでしょうか?他の日常業務(Excel、電子メールなど)に干渉することはありますか?

2)アプリケーションがテキストファイルから常に読み取り/書き込みを行っている場合、日常の仕事をしている場合、ユーザーに何らかの損害を与える可能性がありますか?私は、アプリケーションがテキストファイルを読み書きすることを望んでいるが、私はこのアプリが「必要な時にバックグラウンドで実行する」より多くのものになるので、人がやっている何か他のものに何らかの干渉を起こさせたくない。

3)特定のコードブロック、可変記憶域、またはデータ記憶域がエンドユーザーにどのように課税されるのかを定量化する方法はありますか?受け入れられるのは何ですか?

4)私はアプリケーション内のどのウィンドウからでもデータを表示できる "グローバル"リストとして使用するいくつかのリスト(tのリスト)を持っています。これらのリストがどのくらいのメモリを占有するかを数値化する方法はありますか?リストは、整数のリストから数十のプロパティを持つ変数のリストまでの範囲です。これがアプリやエンドユーザーにどのように課税されているのか何とか定量化できますか?

は、任意の助けてくれてありがとう、あなたは本当にあなたがメモリプロファイラを使用する必要があるアプリケーションのメモリ使用量の詳細に入るために/必要性を望むなら、私は私の質問

答えて

2

に答えるために記事を検索していきます。

を(市販)
  • http://www.jetbrains.com/profiler/(市販)

    あなたの他の質問には答えるのは難しいです:使用されているものをDB

    • マシンはDBサーバーをどの程度実行していますか?
    • ユーザー数?性能プロファイラは助けることができるいくつかのものに等

    - 例えば、上述したメモリプロファイラは、(ESPレッドゲート/ジェットブレーンズ等から)通常性能プロファイラと一緒にパッケージで入手可能です。 ..

  • +0

    リンクありがとうございます!私はそれらをチェックアウトします。正直言って、それは非常に重要ではありませんが、私は初心者として「最適化」しようと数時間を費やしており、それは時間がかかりすぎているので、私の努力が無駄であるかどうかを知る必要があります。残念ながら、データベースに関する質問はわかりません。これはinformixデータベースで、数百人のユーザーがいて、私はそのマシンに関する情報を持っていません。クエリ自体は約5〜10秒で実行され、バックグラウンドワーカーで30秒ごとに実行されます。 – kdonah3

    +0

    @ kdonah3クエリのボトルネックとなるものだけを最適化してください - 実行あたり5〜10秒は大変だと思います。多くのユーザーが30秒ごとにこのクエリを実行すると、本当に問題になるでしょう。クエリの結果はユーザー固有ですか?またはすべてのユーザーに対して同じデータを返しますか? – Yahia

    +0

    すべてのユーザーに対して同じデータを返しますが、一度に実行するユーザーは5〜6人だけです。 5〜10秒はちょっと長いかもしれない、ええ...私は、もっと少ないレコードを検索することでそれを落とす可能性がある。 – kdonah3

    2

    少し試してみます。バイト整数は1バイトのメモリを使用します。 int32は4バイトを使用します。したがって、2000 Int32は8 kbを使用します。クエリを実行する必要がある場合は、多く実行する必要があり、そのクエリを閉じて見つからないインデックスを追加する必要があります。これが動的データの場合は、(nolock)を使用するとOKとなり、ロックが少なくても高速になります。クエリがすべてのユーザーに対して同じデータを返す場合は、すべてのユーザーが同じクエリを実行していないことを願っています。サーバーがx秒ごとにクエリを実行し、その応答を要求する複数のクライアントに送信する2層アプリケーションが必要です。オブジェクトのサイズはちょうどそれを追加します - バイトは1バイトです。あなたはデバッグであなたのアプリケーションを置くことができ、どのステートメントが速くて遅いかを知ることができます。

    関連する問題