0

GTMLoggerアプリケーションでフォーマットされたロギングの関数を使用しています。このアプリケーションは、リアルタイムのposixスレッド(オーディオパケット処理)を作成します。これらの非Cocoaスレッド内からロギングを実行する必要がある場合があります。GTMLogger自動解放されたオブジェクトを作成し、Cocoa以外のスレッドからログを記録する関数の呼び出しを@autoreleasepoolブロックすることを考えましGTMLoggerたが、パフォーマンスに影響するのではないかと心配しています。

私の質問は、自動解放プールを作成して現在のposixスレッドに関連付けることができるので、ログ関数が呼び出されるたびではなく、スレッドごとに1回だけプールが作成されるということです。

前もって感謝します

4

2 に答える 2

1

ARC では、使用@autoreleasepoolは非常に高速です。そこでのパフォーマンスが気になる場合は、自動解放プールよりも、不要なロギング呼び出しを最初から回避することの方がはるかに心配です。

スレッドが存続期間が長い場合、通常、「スレッド」に関連付けられたプールを作成することはできません。@autoreleasepool{}定期的にプールを空にする必要がありますが、スレッドのメイン関数全体をまたはそれに似たもので囲むだけでは、それは起こりません。

于 2013-02-04T19:31:08.657 に答える
0

スレッドのメイン関数を制御できない場合は、そのライブラリが制御するコードを「呼び出す」場所に自動解放プールを配置するのが最善だと思います。

于 2013-02-04T20:09:29.737 に答える