プログラミングに関してフットプリントが小さいとはどういう意味ですか?
-
06-07-2019 - |
質問
JXTAやPjSIPなどの多くのライブラリのフットプリントが小さいと聞きました。これは小さなリソース消費か何かを指しているのですか?
解決
フットプリントは、コンピューターのRAMメモリでアプリケーションが占有するサイズを指定します。
フットプリントは、メモリ消費について話すときに異なる意味を持つ場合があります。 私の経験では、メモリフットプリントには、ヒープに割り当てられたメモリ(ダイナミックメモリ)やディスクなどからロードされたリソースが含まれないことがよくあります。 「低フットプリント」を報告する場合または「高フットプリント」、必要なスペースの一定または最高の測定値が通常必要です。
たとえば、画像エディターのフットプリントレポートに動的メモリを含める場合、フットプリントは、ユーザーがアプリケーションにロードした画像のサイズに完全に依存します。
サードパーティライブラリのコンテキストでは、ライブラリの作成者は、絶対に必要なコードよりも多くのコードをアプリケーションバイナリにリンクしないようにすることで、ライブラリの静的メモリフットプリントを最適化できます。たとえばCでこれを行うために使用される一般的な方法は、ライブラリ関数を個別のcファイルに配布することです。これは、ほとんどのCリンカーが、呼び出した関数だけでなく、Cファイルのすべてのコードをアプリケーションにリンクするためです。したがって、Cファイルに1つの関数を配置すると、リンカーはアプリケーションを呼び出すときにアプリケーションに組み込まれます。 cファイルに5つの関数を配置すると、リンカは、そのうちの1つだけを使用する場合でも、おそらくすべての関数をアプリにリンクします。
これはすべて、フットプリントの一般的な(アカデミックな)定義には、あらゆる種類のメモリ/ストレージの側面が含まれます。
他のヒント
Wikipedia メモリフットプリントの記事から:
メモリフットプリントは、プログラムが実行中に使用または参照するメインメモリの量を指します。
これには、(ほとんど)プログラム命令(および場合によっては定数)を含むコードセグメント、データセグメント(初期化および未初期化の両方)、ヒープメモリ、コールスタック、追加のデータ構造を保持するために必要なメモリなど、あらゆる種類のアクティブメモリ領域が含まれます、たとえば、シンボルテーブル、デバッグデータ構造、開いているファイル、現在のプロセスにマップされている共有ライブラリなど、プログラムの実行中に必要であり、実行中に少なくとも1回読み込まれます。
一般的には、占有するメモリの量です。実行時にメモリに残す「フットプリント」です。ただし、ハードドライブでどれだけのスペースを使用するかを示すこともできます。ただし、最近ではそれほど問題ではありません。
アプリを作成していてメモリに制限がある場合は、プロファイラーを実行してプログラムの使用量を追跡することを検討してください。
リソースを参照します。特にメモリ。実行時に必要なメモリが少なくなります。
はい、メモリやディスクなどのリソース