1

Cで書かれた静的ライブラリがあり、動的メモリ割り当てはありません。CフットプリントのメモリフットプリントとCPU使用量の見積もり

これまでのところ、このライブラリはCPUとメモリが豊富な通常のi386 Linuxのアプリケーションでのみ使用されていました。

これで、組み込みのリアルタイムARM9システム(サードパーティ製)のライブラリのビルドを試す必要があります。その前に私は、メモリフットプリントとCPU使用量の概算をしなければなりません。

メモリフットプリントでは、i386マシン上に、ライブラリと静的にリンクする小さなアプリケーションを作成し、ライブラリのすべての機能を実行します。このアプリケーションの常駐メモリをチェックすると、私のライブラリのメモリフットプリントの球面の見積もりが得られます。それを測定する良い方法はありますか?

CPU使用量を見積もるために、私は迷っています。もちろん、上記のテストアプリケーションをi386システムで実行することはできますが、ARMシステムと関連性のあるものに変換できるメトリックがあれば、それは私には分かりません。それを行う方法はありますか?

+1

コンパイルしてRaspberryPiで実行し、おそらくgprofを使用しますか? – wildplasser

+1

ラズベリーパイはARM11を使用しています。間違いなく、異なるシステムアーキテクチャ、メモリなどです。もしARM11上でうまくいかないとわかったら、それは便利だと思いますが、そうでなければARM9については何も学んでいません。 – ams

+0

あなたの質問を明確にしてください。あなたは*「メモリフットプリントのために、私のi386マシン上に小さなアプリケーションを構築します...」と言っていますが、** i386やARM9用に**ビルドしますか? – user694733

答えて

2

メモリの見積もりは、ARM9のためにコンパイルしている限り、とかなり良好です。実際には、デバッグ情報なしでライブラリをクロスコンパイルし、ライブラリのすべての関数が最終アプリケーションで使用されることを期待すると、ライブラリのファイルサイズはかなり良いボールパークの見積もりです。あなたが0で初期化された大域(または静的)変数をたくさん持っていた場合にはうまくいかない唯一の方法です。ランタイムメモリの割り当ては、もちろん別の問題ですが、あなたはそれをすでに説明しています。

x86コードに基づくサイズの見積もりは、同じボールパーク内にある可能性がありますが、実際には信頼されるべきではありません。コンパイラ間でもサイズは異なりますので、可能であれば一致させてください。ただし、最新のARMコンパイラであればは概算でと推定されます。

CPUの見積もりでは、それを測定せずに図を置くことは不可能です。 CPUのアーキテクチャー効率、コンパイラー最適化の有効性、クロック速度、メモリー速度、バス速度、キャッシュ・サイズ、他の実行タスクに起因するキャッシュ圧等などの関数です。変数が多すぎます。

あなたができるかもしれないことは、big-O記法を使って、異なる入力のアルゴリズムの性能について何かを言うことです。

私はたぶん「明るい」または「重い」と言います。あなたはおそらくそれらの適合のアイデアを持っています。

+0

ARM以外のシステムでライブラリをコンパイルすると、ARMシステム上のライブラリの大きさが合理的に見積もられますか?これはまったく正しいことではありません。同じアーキテクチャの2つの異なるコンパイラでコンパイルすると、2つの全く異なるメモリサイズが得られます。 2つの異なるアーキテクチャーと比較するとさらに悪化します。 – user694733

+0

いいえ、もちろん私はそれを言っていません。それは不条理です。なぜあなたはそれについて考えるのですか? – ams

+0

* "メモリフットプリントのために、私は自分のi386マシンに小さなアプリケーションを構築する" *と* "あなたのメモリ見積もりはかなり良いと思う" * – user694733

関連する問題