web-dev-qa-db-ja.com

プログラミングに関して小さなフットプリントの意味は何ですか?

JXTAやPjSIPなどの多くのライブラリーのフットプリントは小さいと聞きました。これはリソースの消費が少ないことを示していますか?

37
Xinus

フットプリントは、コンピュータでアプリケーションが占有するサイズを示しますRAMメモリ。

メモリ消費について話すとき、フットプリントは異なる意味を持つ可能性があります。私の経験では、メモリフットプリントには、ヒープに割り当てられたメモリ(動的メモリ)、またはディスクから読み込まれたリソースなどが含まれていないことがよくあります。これは、動的割り当てが一定ではなく、アプリケーションまたはモジュールの使用方法によって異なる場合があるためです。 「設置面積が小さい」または「設置面積が大きい」と報告する場合、通常、必要なスペースの一定または上限の測定が必要です。

たとえば、画像エディターのフットプリントレポートに動的メモリを含める場合、フットプリントは、ユーザーがアプリケーションにロードした画像のサイズに完全に依存します。

サードパーティライブラリのコンテキストでは、ライブラリの作成者は、絶対に必要以上のコードをアプリケーションバイナリにリンクしないようにすることで、ライブラリの静的メモリフットプリントを最適化できます。たとえばCでこれを行うために使用される一般的な方法は、ライブラリー関数を個別のCファイルに分散することです。これは、ほとんどのCリンカーが、呼び出す関数だけでなく、cファイルのすべてのコードをアプリケーションにリンクするためです。したがって、cファイルに単一の関数を配置すると、それを呼び出すときにリンカーがアプリケーションに組み込まれます。 cファイルに5つの関数を配置すると、リンカーは、たとえ1つしか使用していなくても、おそらくそれらすべてをアプリにリンクします。

このすべてが言われている、フットプリントの一般的な(学術)定義には、あらゆる種類のメモリ/ストレージの側面が含まれます。

44
sharkin

ウィキペディアから メモリフットプリント 記事:

メモリフットプリントとは、プログラムが実行中に使用または参照するメインメモリの量を指します。

これには、(ほとんどの場合)プログラム命令を含むコードセグメント(場合によっては定数)、データセグメント(初期化されたものと初期化されていないものの両方)、ヒープメモリ、コールスタック、および追加のデータ構造を保持するために必要なメモリなど、あらゆる種類のアクティブなメモリ領域が含まれます。シンボルテーブル、デバッグデータ構造、開いているファイル、現在のプロセスにマップされた共有ライブラリなど、プログラムの実行中に必要であり、実行全体で少なくとも1回はロードされます。

6
Alexey

一般的には、使用するメモリの量です。実行時にメモリに残る「フットプリント」です。ただし、ハードドライブでどれだけのスペースが必要かを示すこともありますが、最近はそれほど問題ではありません。

アプリを作成していてメモリに制限がある場合は、プロファイラーを実行して、プログラムの使用量を追跡することを検討してください。

4
Mark Mayo

リソースを指します。特にメモリ。実行時に必要なメモリ量は少なくなります。

3

はい、メモリやディスクなどのリソース

1
djna