2011-10-21 13 views
8

ロギングがアプリケーションのパフォーマンスを低下させるかどうか知りたいですか? また、Androidアプリケーションのパフォーマンスを向上させるためのヒントを教えてください。ログの書き込みが多すぎるとAndroidアプリケーションのパフォーマンスが低下しますか?

+0

ログをデバッグのみに使用する...実際のビルドをアップロードするときにすべてのログメッセージを削除します。 – Krishnabhadra

+1

過度のログはパフォーマンスにはほとんど影響しませんが、一般的にはそうではありません。 (@gt_ebuddy答えのリンクを参照してください)。開発をDDMSに接続すると、アプリの処理速度が遅くなります。 – cistearns

+1

[Log.dとパフォーマンスへの影響]重複している可能性があります(http://stackoverflow.com/questions/3773252/log-d-and-impact-on-performance) – rds

答えて

15

あなたのアプリケーションの実際のビルドにログを表示しない方が良いでしょう。

は、デバッグを設定することで、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

とSOのQAを読む:

Log.d and impact on performance

Android Logging - How to clear for better performance

+4

私の経験では、マニフェストの設定はログには影響しません出力。デバッガがアプリケーションにアタッチできるかどうかを制御するだけです。 – cistearns

+0

**太字**ありがとう –

+0

@cistears debuggable = "false"を設定すると効率が向上しますか? –

1

使用ログの書き込みの前に声明 'が'。
アプリケーションのリリース時にログを無効にすることができます。

例:過剰で

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]----------------------------------------- 
} 

}

1

任意のテキスト出力でもデスクトップアプリケーションで、アプリケーションが遅くなります。過度のロギングでは処理が遅くなりますが、基本的には非常に多くのデータが送信される必要があります。これはforループまたはwhileループでは難しくありません。ロギング中にバックグラウンドで起こることには、文字列操作、テキストレンダリング、キャッシュ管理、データフィルタリング、ログ長制限などがあります。

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

関連する問題