2017-02-19 11 views
0

アンドロイドでコード実行速度をテストするためにスレッドを使用する必要がありますか?私はベンチマークにこのコード必要

public static String foo() { 

    final long startTime = System.nanoTime(); 
    try { 
     // my code here 
     final long endtime = System.nanoTime(); 
     System.out.println ("Total execution time:" + (endtime - startTime)); 
     return msg; 
    } Catch (GeneralSecurityException e) { 
     return "ERROR"; 
    } 
} 

イムつもりはquadcoreとの2つの異なるAndroidデバイスでは、このコードを実行し、私はこのようなベンチマークのためのスレッドを使用する必要がありますか?スレッドなしで実行すると出力に影響しますか?

編集:イムつもりが、それは私の大学紙

答えて

0

アプリが何をしているかを知ることDDMSとSYSTRACEを使用することができるため、どのように長いための2つのアルゴリズムの純粋な速さを比較する必要があります。

ベンチマーキングでは、特定の時間内ではなく、可能な限り最速または最適化された方法で作業していることを確認する必要があります。

あなたがスレッドを導入した場合、コードのあなたのラインを非同期/並列に実行され、それはその目標達成のためにあなたのシステムリソースを分割し、スレッドの数を増やすと、いくつかの中で(ThreadPoolExecutorを参照)、ブロッキング導入し、いくつかのスレッドをブロックするために、その優れた引き起こすが、場合によっては、タスクをブロックする必要はありません。

スレッドを使用する場合は、スレッドプールのブロックポリシーまたは拒否ポリシーをチェックする必要があります。

特定の期間に単一タスクの代わりにスレッドを使用する方が良いです。

関連する問題