如何将任务分配给每个处理器核心



我正在四核安卓手机上执行基本的加密/解密。

目前每个文件的加密时间为 1.45 秒。对于 200 个文件,大约需要 5 分钟。
如果我使用所有 4 个内核,我可以将性能提高 4 倍。

for(i=0;i<200;i++)
{
     encrypt(file[i]);
}

将是一个简化的伪代码,我现在正在使用。

如何在安卓 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)。在循环中,将每个调用包装为加密的可运行或可调用,并将未来收集到列表中。然后迭代期货,等到它们全部完成并处理结果。

相关内容

  • 没有找到相关文章

最新更新