`
从此醉
  • 浏览: 1047496 次
  • 性别: Icon_minigender_1
  • 来自: US
社区版块
存档分类
最新评论

JAVA和CPP的性能比较

    博客分类:
  • Java
阅读更多

Java vs C app performance – Gary explains

视频地址:http://www.qiangwaiba.com/youtube/watch/TDBTiwjTT0k

public boolean isprime(long a)
{
        if(a == 2){
                return true;
        }else if(a <= 1 || a % 2 == 0){
                return false;
        }
        long max = (long)Math.sqrt(a);
        for(long n= 3; n <= max; n+= 2){
                if(a % n == 0){ return false; }
        }
        return true;
}

And now for C:

int my_is_prime(long a)
{
        long n;
        if(a == 2){
                return 1;
        }else if(a <= 1 || a % 2 == 0){
                return 0;
        }
        long max = sqrt(a);
        for( n= 3; n <= max; n+= 2){
                if(a % n == 0){ return 0; }
        }
        return 1;
}

结果

我跑了21种不同的Andr​​oid设备我混合动力车的Java / C应用程序,有很多的帮助下在这里的Andr​​oid管理局同事。Android的版本包括Android 4.4的奇巧,是Android 5.0棒棒堂(包括5.1),在Android 6.0棉花糖,而Android 7.0 N.部分设备都是32位的ARMv7有的呈64位ARMv8设备。

该应用程序不执行任何多线程和在执行测试未更新屏幕。这意味着芯的设备上的数量不会影响结果。什么是我们感兴趣的是形成在Java中的任务和C.演艺吧所以,虽然测试结果确实表明,LG G5比LG G4快(如你所期望的),这不是之间的相对差异这些测试的目的。

总的来说,测试结果是根据Android版本和系统架构成群在一起(即32位或64位)。虽然出现了一些变型中,所述分组是清楚的。要绘制图表我用从每个类别最好的结果。

第一个测试是测试SHA1。正如预期的那样运行的Java比C慢据我分析垃圾收集器起着减缓应用程序的Java的部分的显著作用。这里是百分比差异的运行Java和C之间的曲线图

Java的VS-C-SHA1-16x9

 

 

具有最差分数开始,32位的Andr​​oid 5.0,表明该Java代码跑慢296%比C,或换句话说4倍慢。再次,要记住的绝对速度在这里并不重要,而是采取相比C代码运行Java代码,相同的设备上的时间差。32位的是Android 4.4奇巧其的Dalvik JVM是有点快了237%。一旦跳跃。到Android 6.0棉花糖做起事情来显着提高,与64位的Andr​​oid 6.0屈服Java和C之间的差异最小

第二个测试是素数测试,使用审判部门。正如上面这段代码注意使用64位  长的整数,因此将有利于64位处理器。

Java的VS-C-素数-16x9的

 

正如所预期的最好结果来自于Android的64位处理器上运行。对于64位的Android 6.0的速度差异非常小,只有3%。虽然64位的是Android 5.0是38%。这表明ART在Android 5.0和之间的改进优化中的Android 6.0使用ART编译器。由于Android 7.0仍然是n开发测试版我还没有显示的结果,但它一般表现以及Android的6.0米,如果不是更好。结果更糟的是针对Android的32位版本和32古怪位的Android 6.0得到该组的最糟糕的结果。

总结

总体C是比Java快,但两者之间的差距已经有64位的Andr​​oid 6.0棉花糖的释放大幅度下降。当然,在现实世界里,决定使用Java或C不是黑色和白色。虽然C有一定的优势,所有的Andr​​oid UI,所有的Andr​​oid服务,并且所有的Andr​​oid的API被设计成从Java调用。C可真当你想要一个空白的画布的OpenGL才能使用,并且希望到画布上绘制,而无需使用任何Android的API。

但是,如果你的应用程序有一些繁重的事,那么那些零件可能被移植到C,你可能会看到速度提升,但并不像你一次能看到。

原文:http://www.androidauthority.com/java-vs-c-app-performance-689081/

0
2
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics