0

デスクトップ アプリケーションを設計する際に、アプリケーションが使用するメモリの量に関する一般的なルールはありますか?

負荷の高いアプリケーションの場合、Firefox や Google Chrome のように簡単に理解できるか、少なくともプロファイリングできます。しかし、小規模なユーティリティや基幹業務アプリケーションの場合、許容できるメモリ使用量はどれくらいでしょうか?

最近、メモリ使用量とパフォーマンスのトレードオフに出くわしたので質問しましたが、それに関して一般的なコンセンサスがあるかどうか疑問に思っていますか?

編集:プラットフォームは、リッチ インターネット アプリケーションを実行できるマシンを使用するユーザー向けの Windows XP です。

私の特定のトレードオフの問題は、メモリに大量の画像をキャッシュすることです。可能であれば、ユーザーのメモリが許す限りアプリをキャッシュしたいと思っています。現時点でのメモリ負荷を考慮して、アプリケーションが特定の最大制限までキャッシュするようにしました。.

しかし、良い数字は何でしょう?どうやって思いつきますか?それが私が尋ねているポイントです。

4

3 に答える 3

2

これに対する絶対的な答えはありません。変数が多すぎることに依存します。

考慮すべきいくつかのトレードオフは次のとおりです。

  • どのデバイス/プラットフォーム用に開発していますか?
  • ユーザーがこのソフトウェアをコンピューターの主な目的として使用することを期待していますか(たとえば、ある種のサーバーソフトウェアを開発している場合など)
  • あなたのターゲットオーディエンス、ホームユーザーは誰ですか?パワーユーザー?
  • ユーザーが持つRAMの量について現実的な期待をしていますか?
  • ユーザーがそのコンピューターで他の多くのソフトウェアも使用することを考慮していますか?

時々あなたのケーキを持ってそれを食べることも可能です。たとえば、ファイルを読み取って書き戻す場合、ファイル全体をメモリに読み込んでから書き出すのではなく、チャンクごとに読み取ることができます。この場合、メモリ使用量が向上し、速度が低下することはありません。

必要に応じて、速度を上げるためにRAMを増やすことをお勧めします。ただし、RAM要件がターゲットオーディエンスにとって現実的である場合に限ります。たとえば、1GBのRAMを搭載したホームユーザーがプログラムを使用することを期待している場合は、600MBのRAMを自分で使用しないでください。

このインスタンスではより多くのRAMを使用して速度を上げ、コードの他の部分を最適化してより少ないRAMを使用することを検討してください。

編集:

画像のキャッシュの特定の状況について。ユーザーが実行したいキャッシュの量をオプションとして設定できるようにするのが最善だと思います。そうすれば、RAMが多い人はパフォーマンスを向上させるためにRAMを高くすることができ、RAMが少ない人はRAMを低く設定することができます。

于 2008-11-15T19:31:29.957 に答える
1

これは、多かれ少なかれビジネス上の決定であるターゲットプラットフォームに完全に依存します。必要なメモリが多いほど、ソフトウェアを使用できる顧客は少なくなります。いくつかの質問:あなたの顧客(または潜在的な顧客)は自分のコンピュータにどのくらいのメモリをインストールしていますか?他にどのようなアプリケーションがアプリケーションと同時に実行されますか?アプリケーションは、排他的に実行されていると想定されているものですか(フルスクリーンのコンピューターゲームなど)、またはほとんどバックグラウンドで実行されていると想定されているユーティリティですか、それとも他のアプリケーションから頻繁に切り替えられるユーティリティですか?

Hearは、Steamを介してゲームをプレイする人々のシステムにインストールされたRAMの分布を示す調査の一例です(出典:Valve-調査概要データ):

  • 96 Mb未満0.01%
  • 96 Mb〜127 Mb 0.01%
  • 128 Mb〜255 Mb 0.21%
  • 256 Mb〜511 Mb 5.33%
  • 512 Mb〜999 Mb 19.81%
  • 1Gbから1.49Gb30.16%
  • 1.5Gbから1.99Gb6.10%
  • 2.0 Gb 38.37%

私のドメイン(コンピューターゲーム)でのこのような調査から導き出す結論は、ほぼすべてのユーザーが512 MB以上であり、大多数が1GB以上であると合理的に予想できるということです。排他的に実行されることになっているコンピュータゲームの場合、これは約400 MBのワーキングセットがかなり安全であり、ほとんど誰も制限しないことを意味します。それが製品に大きな付加価値を提供する場合、ワーキングセットを持っている意味があるかもしれません。約800MB。

于 2008-11-15T19:29:58.993 に答える
0

これは、ターゲットPCハードウェアによって異なります。アプリケーションがメモリを使いすぎると、Windowsページの処理が遅くなります。テスト!妥協点で両方のオプションを試してください。意味がある場合は、その中間のオプションを試してください。ユーザーが使用する一般的なマシンで、かなりの数の他のアプリケーションを開いた状態でテストを実行します。したがって、ほとんどの人にとって、それはOutlookであり、おそらくInternet Explorer(または選択したメールクライアント/ブラウザ)のインスタンスまたは2つです。私は自分のアプリケーションの使用が他のカスタムアプリケーションも実行している可能性が高い組織で働いているので、実行中のアプリケーションでもテストします。アプリケーションがメモリを使いすぎて、アプリケーションの切り替えが非常に遅くなることがわかったため、メモリ使用量を減らすためにアプリケーションを少し遅くしました。興味のある方は、私たちのターゲットハードウェアは元々512Mbのマシンでした。これは、私たちの一般的な標準仕様のワークステーションであったためです。このアプリケーションのために、いくつかのPCを1Gbにアップグレードする必要がありました。RAMの使用量を少し減らしましたが、VB .NETで記述されており、使用されるメモリのほとんどはフレームワークのようです。PerfMonによると、プロセスでは約200Mb(ピーク)が使用されていますが、マネージヒープは約2Mbにすぎません。

于 2008-11-15T19:26:59.623 に答える