3

Linux(Kernel 3.0)上で実行されるユーザースペースオーディオアプリケーションを作成していますが、リアルタイムの動作が必要です。glibcまたはuClibCを使用する必要がありますか?uClibCとglibcは、リアルタイムの動作に関してどのように比較されますか?

(編集:私のものはnandフラッシュを備えた組み込みシステムです。glibcを備えた外部gccツールチェーンでbuildrootを使用します。必要に応じてuClibcでbuildroot内部ツールチェーンを使用することもできます)

4

3 に答える 3

3

現実的には、どちらかの方法で確実に言える人はいないと思います。その理由は、コードが C ライブラリを、あるバリアントが他のバリアントよりもはるかに優れている/劣っている方法で使用している可能性があるためです。

合理的な唯一の方法は、glibc でコードを実行してから、同じ条件で uclibc を実行することです。作業にかかる時間を比較してください。あなたの場合はどちらが良いですか?-そして、これがある種の組み込みシステムに入る場合は、完全に異なる命令セット、異なるキャッシュサイズ、異なるメモリ速度などを持つPCプロセッサではなく、実行したいプロセッサで測定するようにしてください。 .

malloc を多用するとおっしゃっていますが、それが速度の制限要因であると思われる場合は、malloc をあまり使用しないアプローチを検討する必要があります。特に、「ホットパス」で malloc を呼び出すのは、絶対に必要な場合を除き、お勧めできません。

Linux はリアルタイム OS ではないことにも注意してください。Linux では準リアルタイムの動作しか期待できません。アプリケーションが特定の時間内にオーディオを処理できることに本当に依存している場合、および「実行されていない」期間などの特定の条件がある場合は、必要になりますカーネルに拡張機能を追加する - カーネルのどのバージョン、ワークロードの種類などにどの拡張機能が適しているかについてはよくわかりません。

于 2013-01-22T20:40:29.700 に答える
0

システムにインストールされている C ライブラリを使用します。任意の Linux ディストリビューションは、通常、glibc (デスクトップ システムやサーバー システムを含むほとんどのディストリビューション) または uClibc (一部の組み込みディストリビューション) を使用します。この 2 つを組み合わせて使用​​するのは非常に面倒で、アプリケーションのビルド、デバッグ、および配布が非常に複雑になります。

2 つのライブラリのパフォーマンス特性は一般的に非常に似ており、アプリケーションに重大な影響を与える可能性はほとんどありません。

于 2013-01-22T21:49:05.620 に答える
0

私はあなたのアプリを移植可能に書いて、時間を構築するという決定を遅らせることができるようにします。より良い回答を得るには、使用したいリアルタイム機能を知る必要があります。

于 2013-01-22T17:42:41.567 に答える