在Android上进行多处理

 2023-01-20    311  

问题描述

我一直在执行一些关于Android的测试,以验证如果并行化,算法(如FFT)的性能(如FFT)如何得到改进.我已经通过使用JNI(FFTW)和Java线程(来自Jtransforms)的PTHREAD实现了算法.我没有按预期使用线程获得更好的性能,而是使用串行算法获得了更好的结果.我尚不清楚为什么自从我在多核设备上执行这些测试以来,我已经得到了这些结果.似乎Android系统使用的调度算法与Linux使用的计划算法有所不同,如果您想使用多个CPU在Android上进行多处理,那么您就无法运气.

.

在Android上进行多处理

fftw的示例:
JNI代码在 blob/master/jni/fftw_jni.c 及其界面是 https://github.com/maxrosan/dspbenchmarking/blob/master/master/src/src/src/src/ime/dspbenchmarking/algoriths/algorithms/algorithms/fftw/fftw/fftw.java .

测试中调用的方法是”执行”.

纯Java的示例:

这里称为”执行”的方法.

‘执行’和” perform”在另一个线程中被调用.

推荐答案

如果您的程序在持续时间内运行多个CPU密集型线程,则内核将将线程转换为单独的内核.否则,内核是由两件事激励的:

  • 在核心之间移动线很昂贵(在性能方面).
  • 打开核心很昂贵(电池).

在可能的情况下,Android关闭了内核,仅在CPU需求需要时才能启用它们.

的确切构成”持续周期”的确切构成不同.

我整理了两个示例代码,这些代码演示了多个使用的核心( c版本, java版本).

带有 systrace “> systrace 支持您实际上可以看到图形方式看到哪个,线程在每个核心上运行.

更新:
我认为有一个示例可能会有所帮助,因此我将Multicore.java测试包装在示例应用程序中,然后在Systrace下的4.3 Nexus 4上运行它.我创建了一个页面,该页面解释结果.

以上所述是小编给大家介绍的在Android上进行多处理,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/25918.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。