2012-04-13 17 views
12

Javaでは、使用されているCPUアーキテクチャのみに基づいて最適な32KBのバッファサイズがあります。 Androidの携帯電話では、Dalvik VMは動的に、さまざまな携帯電話から独立した最大のバッファサイズを得るためにCPUの適切なキャッシュを知っていますか?もしそうなら、私はそれを実行時にどのように把握するでしょうか?Androidの最適なバッファサイズ

私は、バッファを最大にすることができ、また最も速くすることで、オーディオ録音のアクティビティを最適化したいとします。私はそれの最小サイズを得ることができますが、最適なサイズはどうですか?

+0

あなたはJVMが正しいと言うとき、あなたは本当にのDalvik VMを意味ですか? – slayton

+0

@slaytonはい、Dalvik VMは具体的には – L7ColWinters

+0

ですが、これはアンドロイドとオーディオのレイテンシとは関係がありません。レイテンシが悪い唯一の理由ではありませんが、それが原因です.https: /developers.google.com/events/io/sessions/325993827より良い説明のために – L7ColWinters

答えて

40

おそらく、あなたはどのデバイスを持っているかによって異なります。

しかし、実験的に、8K <バッファサイズ< 32Kはうまく機能しないと8Kの下で大幅なパフォーマンスの改善があります。やや興味深いここだ

(私はいくつかのAndroidデバイス上でテストされ、様々なバッファサイズで20メガバイトのバイナリファイルを読み込むしようとしました。)バッファ> 64Kといくつかのデータは、64Kバッファアンダー

でデータよりも劣った性能を示したということですエクスプレッション結果が得られ、データを変換する場合はスプレッドシートに貼り付ける方がよいでしょう。ヘッダはバッファサイズ意味し、単位はミリ秒です

グラフ:http://fb.com/photo.php?fbid=468345876512381

    128  256  512  1K  2K  4K  8K  16K  32K  64K  128K 256K 512K 1M  2M  4M  8M  16M 
    Galaxy S  4047 3060 269  155  100  65  64  52  51  45  47  50  49  43  44  46  45  58 
    Optimus LTE 1178 617  322  172  101  65  47  42  41  35  36  39  44  61  56  51  72  60 
    HTC EVO  3971 1884 941  480  251  141  95  69  56  50  48  55  50  49  48  48  48  47   
    Galaxy S2  750  383  210  123  74  50  41  37  35  34  34  37  39  44  46  44  45  44 
    Galaxy Nexus 2272 1216 659  341  187  108  70  52  41  38  38  45  44  54  56  66  68  58 
    Galaxy Note 1549 799  404  220  127  75  58  54  52  56  52  45  44  62  43  39  44  46 

InputStream in = openFileInput(FILE_NAME); 
startTime = System.currentTimeMillis(); 

while (in.read(buffer) > 0) { 
    readCount++; 
} 

elapsedTime = System.currentTimeMillis() - startTime; 

enter image description here

+1

32Kのように見えるのはお金があなたのグラフに基づいている場所です – L7ColWinters

+0

@ L7ColWintersうん、私はあなたに同意します:) –

+0

私はできませんグラフを表示します。 @FelixD。 –

関連する問題