I am performing basic encryption/decryption on a Quad core android phone.
Currently encryption time is 1.45 second per file. For 200 files thats around 5 minutes.
I could improve 4 times in performance if I used all 4 cores.
for(i=0;i<200;i++)
{
encrypt(file[i]);
}
would be a simplified pseudocode, I am using now.
How can I call the encrypt function parallely on all 4 processor cores in android java programming?
Use ExecutorService to perform tasks in parallel: http://developer.android.com/reference/java/util/concurrent/ExecutorService.html
Something like this:
ExecutorService executorService = Executors.newFixedThreadPool(CORE_COUNT);
for (int i = 0; i < 200; i++) {
executorService.submit(new Runnable() {
@Override
public void run() {
encrypt(file[i]);
}
});
}
// Waiting for completion
while (!executorService.awaitTermination(100L, TimeUnit.MILLISECONDS);