如何为每个处理器核心分配任务?
How to allocate a task to each processor core?
我正在四核 android phone 上执行基本 encryption/decryption。
目前每个文件的加密时间为 1.45 秒。 200 个文件大约需要 5 分钟。
如果我使用所有 4 个内核,我可以提高 4 倍的性能。
for(i=0;i<200;i++)
{
encrypt(file[i]);
}
将是一个简化的伪代码,我现在正在使用。
如何在 android java 编程中并行调用所有 4 个处理器内核的加密函数?
使用ExecutorService并行执行任务:http://developer.android.com/reference/java/util/concurrent/ExecutorService.html
像这样:
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);
一种选择是使用 ExecutorService
(http://developer.android.com/reference/java/util/concurrent/ExecutorService.html)。在您的循环中,将每个调用包装到 Runnable 或 Callable 中以进行加密,并将 Future 的调用收集到列表中。然后迭代 futures 等待它们全部完成并处理结果。
我正在四核 android phone 上执行基本 encryption/decryption。
目前每个文件的加密时间为 1.45 秒。 200 个文件大约需要 5 分钟。
如果我使用所有 4 个内核,我可以提高 4 倍的性能。
for(i=0;i<200;i++)
{
encrypt(file[i]);
}
将是一个简化的伪代码,我现在正在使用。
如何在 android java 编程中并行调用所有 4 个处理器内核的加密函数?
使用ExecutorService并行执行任务:http://developer.android.com/reference/java/util/concurrent/ExecutorService.html
像这样:
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);
一种选择是使用 ExecutorService
(http://developer.android.com/reference/java/util/concurrent/ExecutorService.html)。在您的循环中,将每个调用包装到 Runnable 或 Callable 中以进行加密,并将 Future 的调用收集到列表中。然后迭代 futures 等待它们全部完成并处理结果。