質問

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

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

最近、メモリ使用量とパフォーマンスの間のトレードオフに遭遇し、それに関して一般的なコンセンサスがあるかどうか疑問に思ったので、私は尋ねましたか?

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

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

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

役に立ちましたか?

解決

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

検討のためのいくつかのトレードオフがあります:

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

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

一般的に、必要に応じてより多くのRAMを使用して速度を向上させることをお勧めします。ただし、ターゲットユーザーにとってRAM要件が現実的である場合のみです。たとえば、1GBのRAMを持つホームユーザーがプログラムを使用することを期待する場合は、600MBのRAMを自分で使用しないでください。

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

編集:

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

他のヒント

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

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

  • 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%
  • 1 Gbから1.49 Gb 30.16%
  • 1.5 Gbから1.99 Gb 6.10%
  • 2.0 Gb 38.37%

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top