Pho*_*non 5 java performance java-native-interface android android-ndk
我最近一直在玩NDK,因为UI需要高效实现计算密集型算法.NDK文档说明:
NDK的典型优选候选者是独立的,CPU密集型操作,不分配大量内存,例如信号处理,物理模拟等.简单地重新编码在C中运行的方法通常不会导致大的性能提升.
Mine是一种信号处理算法(自适应滤波器,如果您熟悉的话),计算密集型计算具有数百万个线性运算(无法显示代码,但数百万个线性运算几乎总结了它).当我使用JNI和Java实现相同的代码时,我几乎没有获得性能提升.实际上,在不确定范围内,它需要完全相同的时间,所以现在我不确定是否应该只使用Java来实现其他目的.为了比较,它们都需要大约8秒才能完成任务.
当JNI中实现的算法比Java工作得更快时,是否有更好的标准?有没有人有一个表现真正引人注目的例子?
小智 1
例如:对 1 到 1,000,000 之间的自然数求和。代码如下:
unsigned int sum = 0;
for(int i = 1; i <= 1000000; ++i) {
sum += i;
}
Run Code Online (Sandbox Code Playgroud)
如果上面的代码是用java编写的话,时间大概需要200ms左右。但在jni中用c编码时,时间只需要30ms左右。你可以尝试一下。
| 归档时间: |
|
| 查看次数: |
1355 次 |
| 最近记录: |