当我在多核设备(如 S3)与单核 android 设备上运行我的多线程 android 应用程序时,我试图衡量我的代码的性能改进。为了衡量性能,我按顺序运行任务而不是并行运行。我已经实现了普通的 Java 线程,这似乎没有什么不同。因此我尝试了 AsynchTask,但我只得到了一点性能提升。
你能告诉我如何编写代码来确保我的每个任务/线程都在不同的内核上运行,而不是在一个内核上运行吗?如果这是不可能的,我怎样才能最大限度地为我的应用程序使用多个内核?
这是执行任务的活动的 onCreate 方法的代码。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_local_executor);
multiplicationTask t1 = new multiplicationTask();
t1.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
multiplicationTask t2 = new multiplicationTask();
t2.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
multiplicationTask t3 = new multiplicationTask();
t3.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
multiplicationTask t4 = new multiplicationTask();
t4.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
这是从 onCreate 方法运行的 AsynchTask
class multiplicationTask extends AsyncTask<Integer, Integer, String> {
protected void onPreExecute()
{
Log.v("PrintLN", "Executing Task");
}
@Override
protected String doInBackground(Integer... params) {
//Do lots of floating point operations that are independent of anything whatsoever
}
protected void onPostExecute(String result) {
Log.v("PrintLN", "Done Task: " + resulting_time);
}
}