1

マルチスレッドアプリケーションでは、おおよそ次の傾向が見られます。

No. of threads:  2
Application time: 5s 

No. of threads: 4 
Application time: 10s 

No. of threads: 8 
Application time: 20s 

No. of threads: 16 
Application time: 40s 

1-アプリケーション時間が増加する理由は何でしょうか(他のアプリケーションを実行しておらず、十分なリソースがある場合)?

2-アプリケーション時間の増加は、スレッドコンテキスト切り替えのオーバーヘッドの増加によるものだと思います。私が正しければ、このコンテキスト切り替えのオーバーヘッドを減らす方法は何ですか?

プロファイラーは、スレッドレベルでの洞察を私に与えていません。

プラットフォーム情報

Android、ARMCortex-A8で実行

4

1 に答える 1

0

それらのスレッドで何をしているかを示していません。推測しやすい答えは、新しいスレッドを追加するときです。これらの新しいスレッドは、他のスレッドから実行負荷を軽減するのではなく、他の方法では実行されない新しい作業を行っています。

16 スレッドの 40 秒の実行時間では、実行された実際の作業単位も数えていて、それらの作業単位に少し時間がかかる場合を除き、コンテキスト切り替えの効果に気付くことはありません。

于 2012-06-12T13:52:17.333 に答える