12

ログがアプリケーションのパフォーマンスを低下させる可能性があるかどうかを知りたいですか? また、Android アプリケーションのパフォーマンスを向上させるためのヒントを教えてください。

4

3 に答える 3

19

はい。過度のロギングは、Androidだけでなくすべてのアプリケーションのパフォーマンスに影響します。

開発者ガイドでは、リリース前にロギングを非アクティブ化および無効化することを推奨しています。

ロギングとデバッグをオフにするリリース用のアプリケーションをビルドする前に、ロギングを非アクティブ化し、デバッグオプションを無効にしてください。ソースファイルのLogメソッドへの呼び出しを削除することで、ロギングを非アクティブ化できます。マニフェストファイルのタグからandroid:debuggable属性を削除するか、マニフェストファイルのandroid:debuggable属性をfalseに設定することで、デバッグを無効にできます。また、プロジェクトで作成されたログファイルまたは静的テストファイルをすべて削除します。

また、startMethodTracing()やstopMethodTracing()メソッド呼び出しなど、コードに追加したすべてのデバッグトレース呼び出しを削除する必要があります。

そのため、アプリの「リリース」または「本番」ビルドでログを抑制する必要があります。

debuggableを設定して、Androidマニフェストでオフにします。

<application android:icon="@drawable/icon" 
        android:label="@string/app_name"
        android:debuggable="false">

別の方法

ログを実行する前に、独自のロガークラスを作成し、デバッグモードを確認してください。これにより、デバッグモードとデプロイされたアプリケーション間のシングルポイント変更が可能になり、ログファイルへの書き込みなどの追加の処理が可能になります。

import android.util.Log;
public class MyLog {
    private static final boolean isDebug = false;;
    public static void i(String tag, String msg) {
        if (isDebug) {
            Log.i(tag, msg);
        }
    }
    public static void e(String tag, String msg) {
        if (isDebug) {
            Log.e(tag, msg);
        }
    }
}


詳細については、http://rxwen.blogspot.com/2009/11/logging-in-android.htmlをお読みください。

およびSOQA:

Log.dとパフォーマンスへの影響

Androidロギング-パフォーマンスを向上させるためにクリアする方法

于 2011-10-21T04:53:43.817 に答える
1

ログを書き込む前に「if」ステートメントを使用してください。
アプリケーションのリリース時にログを無効にすることができます。

例 :

public class LogTest extends Activity {

private static final String TAG = "YOUR_LOG_TAG_NAME";
private static final boolean mDebug = true;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    //--[Start Log example]-----------------------------------------
    if(mDebug) Log.d(TAG, "Log Write Test");
    //--[End Log example]-----------------------------------------
}

}

于 2011-10-21T04:58:17.903 に答える
1

過剰なテキスト出力は、デスクトップ アプリケーションであっても、アプリケーションの速度を低下させます。過度のログは処理速度を低下させますが、基本的には非常に大量のデータを送信する必要があります。ちなみに、これは for または while ループで行うのはそれほど難しくありません。ロギング中にバックグラウンドで発生することには、文字列操作、テキスト レンダリング、キャッシュ管理、データ フィルタリング、ログの長さの制限などがあります。

最終的なアプリから logcat を削除する方法はいくつかありますが、特に ProGuard が関係するものはそうです。ProGuard は私にはうまくいきませんでしたが、sed などのスクリプト プログラムを含め、それらを削除する方法については素晴らしいアイデアがたくさんあります。

于 2012-08-08T20:39:26.417 に答える