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种不同的Android设备我混合动力车的Java / C应用程序,有很多的帮助下在这里的Android管理局同事。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之间的曲线图
具有最差分数开始,32位的Android 5.0,表明该Java代码跑慢296%比C,或换句话说4倍慢。再次,要记住的绝对速度在这里并不重要,而是采取相比C代码运行Java代码,相同的设备上的时间差。32位的是Android 4.4奇巧其的Dalvik JVM是有点快了237%。一旦跳跃。到Android 6.0棉花糖做起事情来显着提高,与64位的Android 6.0屈服Java和C之间的差异最小
第二个测试是素数测试,使用审判部门。正如上面这段代码注意使用64位 长的整数,因此将有利于64位处理器。
正如所预期的最好结果来自于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位的Android 6.0棉花糖的释放大幅度下降。当然,在现实世界里,决定使用Java或C不是黑色和白色。虽然C有一定的优势,所有的Android UI,所有的Android服务,并且所有的Android的API被设计成从Java调用。C可真当你想要一个空白的画布的OpenGL才能使用,并且希望到画布上绘制,而无需使用任何Android的API。
但是,如果你的应用程序有一些繁重的事,那么那些零件可能被移植到C,你可能会看到速度提升,但并不像你一次能看到。
原文:http://www.androidauthority.com/java-vs-c-app-performance-689081/
相关推荐
一些编程语言(JavaScript,Kotlin,Rust,Swift,Nim,Python,Go,Haskell,D,C ,Java,C#,Object Pascal,Ada)的原生性能比较
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、...第一届POLARDB数据库性能大赛参赛源码+项目说明(初赛第5名(JAVA)-复赛第7名(CPP)).zip
第一届POLARDB数据库性能大赛-初赛第5名(JAVA)-复赛第7名(CPP).zip
II. java c/cpp互相调用实例(姊妹篇之一)——java调用c/cpp 4 一 先制作一个系统中有的DLL文件(cpp给出的sdk接口) 4 二 JNI 7 1、 编写java文件 7 2、 生成.h头文件 8 3、 用c/cpp实现这个头文件 9 三 测试 10 ...
Qpid/C++ 是AMQP协议的一个 C++ 的实现。Apache Qpid (Open Source AMQP ...其中C++版本的服务器端具备高性能/低消耗以及RDMA支持,可运行于Windows/Linux和Solaris平台;而Java版本的服务器则支持JMS,以及各种平台。
提供相似或更好的性能特征提供与java实现类似的接口当前实现仅支持单个生产者在其当前状态下,性能测试大致显示了对 java 实现的 x2 性能改进,如 one_to_one_sequenced_throughput_test 的输出所示Java Run 0, ...
语言性能C ++,Python,Perl,PHP,Java,NodeJS,Go,Ruby,Rust,Swift和D性能基准测试博客文章: 2016年: : 2016年: : 2010-2012年: : 这里的基准测试并没有尽力而为,因为它们从一个方面展示了语言的性能,...
源码包含共1084个文件,其中具体文件类型分布如下:头文件(h: 242个)、JavaScript文件(js: 153个)、图片文件(gif: 153个)、C++源文件(cpp: 129个)、图片资源(png: 119个)、Java源文件(java: 45个)、Java...
包括Cpp,Java, Python。主要包括进程调度算法、页面置换算法、动态分区匹配算法、磁盘调度算法。 Java是一种高性能、跨平台的面向对象编程语言。它由Sun Microsystems(现在是Oracle Corporation)的James Gosling等...
默认情况下已经可以统计.java、.C、.h、.CPP 、.C++和.AS 类型文件的统计了。还可以统计.properties文件 3、可以进行统计类型的自定义。点击统计类型配置按钮,在弹出的对话框左边是剩余可 配置的文件类型,右边...
java笔试题算法GraphChi - 基于磁盘的大规模图计算 注意:此项目最近已从 Google Code 中移出,某些 wiki 页面可能部分损坏。 麻省理工科技评论关于 GraphChi 的文章: 新:改进的性能。 (2013 年 10 月 21 日)In-...
pulsar_cpp 介绍在金融行业工作,总是需要编写能够实现低延迟、高性能特性的软件。 LMAX 破坏者是一项 Java 技术,该技术已引起该领域开发人员的极大兴趣。 Pulsar 不是破坏者的端口,而是试图提供一个原生的 C++11 ...
它考虑了在设计和非设计条件下对螺旋桨,船体和发动机的性能分析。 没有推进力,建造的船只就无法移动,因此选择合适的螺旋桨以匹配船体和发动机至关重要。 为了使船舶达到最佳性能,需要考虑将螺旋桨与柴油发动机...
java毕业论文源码 熊猫数据分析工作室 () 熊猫数据分析工作室由从事多年的数据统计分析、计算机科学、工程应用的专家组成的团队。 ...我工作室是专门为科研单位和公司提供数据分析服务支持的团队,
软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、存储设备...
前面我们提到过在设计网站架构的时候可以使用ICE实现对网站应用的基础对象操作,将基础 对象操作和数据库操作封装在这一层,在业务逻辑层以及表现层(java,php,.net,python)进行更丰富的表现与操作,从而实现比较好的...
我们以几种经典(C ++,Java,Python)和炒作(JavaScript,Kotlin,Swift,Rust)编程语言实现了 ,并测试了它们在Linux,Mac OS和Windows(均在不同硬件上运行)的性能,因此不应在平台之间比较结果)。...
它最初是从Java 移植的,但是经过了进一步开发,现在在质量和性能方面进行了许多改进。 它可以读取和写入多种格式的条形码。 特征 在纯C ++ 17中,没有第三方依赖项 无状态,线程安全的读取器/生成器 包装器创建...
Java JavaScript 节点.js 目标-C 珀尔 PHP Python Ruby ... 通过Hprose ,您可以方便高效地在这些编程语言之间进行交互。 本项目是Hprose for PHP-CPP的实现。 如何安装 首先,您应该安装 。 但是现在,...