`
从此醉
  • 浏览: 1104299 次
  • 性别: 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
分享到:
评论

相关推荐

    java4cpp-0.4-src.tar.gz_ECDSA_diffie hellman_java4cpp

    Java4cpp是一个项目,它为Java开发者提供了与C++库交互的能力,特别是在处理加密和密钥交换算法时。在这个特定的版本"java4cpp-0.4-src.tar.gz"中,重点是ECDSA(Elliptic Curve Digital Signature Algorithm),...

    CPP调用JAVA函数Demo

    描述 "CPP调用JAVA函数Demo 需要的可以下载来看看" 暗示这是一个示例项目,可能包含了必要的源代码和配置文件,供学习者参考和实践。下载并研究这个Demo可以帮助开发者了解如何在实际开发中使用JNI来连接C++和Java。...

    jni接口demo,java与cpp快捷调用

    本示例"jni接口demo,java与cpp快捷调用"就是演示如何通过JNI在Java和C++之间建立快速、简洁的调用机制。 首先,我们需要理解JNI的基本结构。在Java端,我们需要定义一个native方法,这是Java代码调用C++函数的入口...

    java调cpp_os.zip

    在IT行业中,跨语言通信是一项常见的任务,尤其是在需要利用特定语言的优势时,如Java的平台无关性和C/C++的高效性能。本案例“java调cpp_os.zip”专注于演示如何使用Java调用C或C++编写的动态链接库(DLL)文件,这...

    Java2Cpp-Translator:应用程序将Java源代码转换为C ++源代码-java source code

    - **源码转换**:Java2Cpp的主要任务是将Java语言编写的源代码转换为等效的C++源代码,使得开发者可以利用C++的优势,例如更低级别的控制、更高的性能和更少的运行时依赖。 - **跨平台兼容性**:Java语言的一大...

    第一届POLARDB数据库性能大赛-初赛第5名(JAVA)-复赛第7名(CPP).zip

    参赛者通过编写JAVA和CPP代码来优化数据库性能,初赛中以JAVA实现获得了第5名,复赛阶段转用CPP实现了第7名的成绩。这表明了参赛者在数据库性能调优、JAVA和C++编程方面具有一定的专业技能。 【POLARDB数据库】 ...

    JavaCallCPP.rar_java 调用cpp

    在IT行业中,跨语言通信是常见的需求之一,特别是在Java和C++这两个强大的编程语言之间进行交互。本资源“JavaCallCPP.rar”提供了关于如何在Java中调用C++代码的详细示例,这对于提高程序性能、利用现有C++库或者...

    notepad++支持C和C++和h和cpp和java文件和多种文件

    它支持包括C、C++、H、CPP以及Java在内的多种文件类型,并且具有强大的文本编辑和编程辅助功能。这款编辑器是用C++编写的,并且以GPL(GNU General Public License)许可证发布,体现了开源软件的精神。 Notepad++...

    cpp-C语言实现的一个解析JAVAclass字节码的库

    标题中的"cpp-C语言实现的一个解析JAVAclass字节码的库"表明这是一个使用C++编写的库,专门用于解析Java的Class文件。在Java中,Class文件是包含字节码的二进制文件,这些字节码是Java虚拟机(JVM)执行的指令。下面...

    Android ndk cpp 线程运行 java 方法

    在Android开发中,有时我们需要利用C++(通过NDK)来编写高性能的代码,并与Java层进行交互。本文将深入探讨如何在C++线程中调用Java方法,以实现跨语言的通信。我们将基于Android Studio 3.0和Gradle 3.2.0的环境来...

    cpp-一些觉见编程语言的原生性能比较

    标题为"cpp-一些觉见编程语言的原生性能比较"的讨论点聚焦于多种编程语言在原生执行效率上的对比。描述提到JavaScript、Kotlin、Rust、Swift、Nim、Python、Go、Haskell、D、C++、Java、C#、Object Pascal以及Ada等...

    java_cPP.zip_json+jsp_ssh ajax json_ssh json

    标题中的"java_cpp.zip_json+jsp_ssh ajax json_ssh json"提到了几个关键的编程技术和概念,包括Java、C++、JSON、JSP、SSH、AJAX。这些元素都是IT行业中非常重要的部分,尤其是在Web开发领域。现在我们来逐一探讨...

    java-Call-CPP.rar_C 调用java

    在IT行业中,跨语言通信是一项常见的任务,尤其是在Java和C/C++之间。"Java-Call-CPP.rar"这个压缩包文件提供了一个实例,演示了如何使用JNI...学习并掌握这项技术,对于提升软件性能和解决特定问题具有重大意义。

    cpp-YVM是用C写的一个Java虚拟机现在支持Java大部分功能

    尽管C语言通常用于系统级编程或性能关键的应用,但`cpp-YVM`项目展示了如何利用其低级别控制和高效特性来构建一个虚拟机。在Java世界中,JVM(Java虚拟机)是运行Java代码的关键组成部分,它负责字节码的解释、内存...

    sqlite java cpp

    SQLite是一款轻量级的开源数据库管理系统,它支持...总之,SQLite在Java和C++中的使用结合了JDBC、JNI和本地库的优势,为开发者提供了灵活性和高性能。理解这些技术的交互对于开发跨平台、数据库驱动的应用至关重要。

    Java转C++代码工具 J2C

    1. **性能优化**:如果一个Java应用程序需要更高的执行效率,C++的底层控制和优化能力可能更有优势。 2. **嵌入式系统**:许多嵌入式设备可能只支持C++,而不支持Java。 3. **遗留系统集成**:在已经有大量C++代码库...

    log4cpp Android NDK 开发

    通过以上知识点,我们可以看到在Android NDK环境中集成和使用log4cpp是一项系统性的工作,涵盖了从库的构建到日志系统的配置和优化等多个环节。理解并掌握这些知识点,将有助于在Android原生开发中实现高效、可维护...

    C++代码转java工具

    在实际使用这种工具时,开发者应该了解转换的局限性,理解哪些部分可能需要手动调整,以及如何测试和验证转换后的代码以确保功能正确性和性能。此外,对于复杂的C++项目,转换可能不是最佳解决方案,因为可能会丢失...

    cpp-ToyJVM用C编写的实验性Java字节解释器

    通过研究和实践ToyJVM,开发者不仅可以提升C语言编程技巧,还能深入了解Java字节码的执行流程,这对于优化Java代码、调试问题以及设计高性能的Java应用都有着极大的帮助。总的来说,这个项目提供了一个独特的视角,...

    java调用c++生成so库

    在Java编程环境中,有时我们需要利用C++的高性能特性来处理特定任务,比如访问硬件设备、进行底层优化等。这时,我们可以使用Java Native Interface (JNI) 来实现Java代码与C++代码的交互。JNI允许Java应用程序调用...

Global site tag (gtag.js) - Google Analytics