私の主題論文では、虹彩認識データを分析する必要があります。したがって、約400のテンプレートが作成されています。これらのテンプレートのそれぞれは、お互いのテンプレートと比較されなければなりません。その結果、約160,000の結果が一致します。Android start 160.000 AsnycTasks
これらの結果は、Azure Easy Tableにアップロードする必要があります。私は、ThreadPoolExecutorが128以上のスレッドを並列に処理できないため、どこから開始するのか本当に分かりません。
このようなことを行う正しい方法は何ですか?時間は本当に問題ではありません。
これは私の現在のアプローチです:
for (int i = 0; i < mIrisEntries.size(); i++){
match(i);
}
public void match(final int position) {
IrisEntry inputEntry = mIrisEntries.get(position);
// takes about 10ms
List<IrisResult> results = mUSITHelper.matchEntries(inputEntry, mIrisEntries, this);
for (IrisResult s : results) {
try {
Thread.sleep(1000);
mAzureTableManager.addIrisResult(s); // here the AsyncTask is started
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
このアプローチはいくつかの時間のために働きます、。システムはすべてのスレッドを強制終了し、アップロードはキャンセルされます。
160,000件の結果の1つを処理するのにどれくらい時間がかかりますか?または、好きな場合は、一度に1つずつ、16万の結果をすべて処理するにはどのくらいの時間がかかりますか? – CommonsWare
あなたが処理することによって、1つの結果のアップロードまたは作成を意味しますか? 2つのテンプレートのマッチングには約10秒かかります – 4ndro1d
「処理することで、アップロードまたは1つの結果の作成を意味しますか?」 - 私はあなたのアプリを知らないので、私は知らない。 Azureのアップロード操作は、160,000件の一致する結果の*ごとに1回行っていますか?あるいは、160,000試合の終わりに1つをしていますか?それとも別のもの(バッチでアップロードするなど)ですか? – CommonsWare