大家好,今天小编关注到一个比较有意思的话题,就是关于java语言效率低的问题,于是小编就整理了5个相关介绍Java语言效率低的解答,让我们一起看看吧。
- 为什么我觉得Java学起有点难呢?
- 对于java语言来说,大量注释会影响执行效率么?
- 为什么说Java比C / C++ 慢?
- 都说搞底层和算法的才厉害,学Java的感到自卑,怎么办?
- 相比ios,安卓系统的执行效率为什么比较低?
为什么我觉得JAVA学起有点难呢?
如果是自学一开始选j***a是比较难的,正统推荐是从c或者c++开始学,但是对于初学者也不容易。我推荐是可以从html+js开始学,先有代码的逻辑性与语法概念之后,再去学C++或者j***a。 而且学编程有导向比较好,比如想做某个程序或者网页,这样也有动力。
对于j***a语言来说,大量注释会影响执行效率么?
对的,众所周知J***a是解释执行,当你写了越多注释,则需要解释的字符串也越多,自然效率浪费的也越多,对于一般的编程语言来说,注释在编译的时候会忽略不计,但是对j***a来说它是解释注释操的。注释得越多,需要解释答字符串也就越多,所以一个基本原则就是,J***a代码要写的越短越好,可惜由于语言设计原因,J***a代码一般都很长,所以很多人对J***a的执行效率不满。
为什么说J***a比C / C++ 慢?
j***a程序和c程序都需要CPU来运行。
区别是c和c++程序编译后的可执行文件是机器码,cpu认识它们,可以直接加载并运行:
j***a程序编译出来的则不是机器码而是字节码,需要由j***a虚拟机先把字节码转化为机器码,然后才能在CPU上运行:
j***a程序--(编译器)->字节码--(虚拟机)->机器码-->运行
j***a比c多了一个从字节码转化为机器码的过程,所以j***a运行慢。
所以说j***a是一种解释性语言,c是一种编译性语言。
1.C++是编译型语言,j***a是解释型语言,普遍来讲,编译型语言要比解释型语言速度快。
2.C++是在C语言的基础上增加了新的语法和面向对象的机制,更加接近C语言,也就意味着更加接近底层硬件,越接近于硬件,运行速度越快。
3.j***a是纯面向对象的语言,实现了大量类的封装,体系比较庞大,对于j***a程序员来说,底层硬件可以说是透明的,所以想要优化效率是不容易的。
4.j***a慢于C++的一个重要原因就是j***a是运行在j***a虚拟机上,虚拟机的也需要时间开销。
5.总的来说,C++的效率大概是j***a的3到4倍,但是现在CPU的速度已经很快了,这种几倍的效率问题CPU已经可以完全屏蔽了。
的确,不可否认,J***a运行效率上比C/C++是要慢一些,但随着JVM / JIT的不断升级优化,这种速度上的差异会越来越小。
那为什么说J***a比C/C++运行效率上要慢呢?且听我说:
1、J***a是解释型语言、C/C++是编译型语言:
C++可以理解为是C语言的升级扩展版本,C/C++的程序编译出来的是机器码,可以被CPU直接加载执行的;而J***a编译出来的是字节码,然后要通过JIT编译器“翻译”为机器码,然后再被JVM加载执行。J***a中间多了个翻译过程。
两种语言的执行过程大概如下:
J***a:
程序 》编译 》字节码 》JVM 加载处理 》机器码 》执行
C/C++:
程序 》 静态编译器 》 机器码 》执行
2、J***a其实是运行在JVM(虚拟机)上的:
J***a的跨平台其实靠的就是与系统无关的字节码与JVM来实现的,JVM可以理解为是一个虚拟机系统,J***a程序是跑在JVM上面的(JVM底层是用C实现的)。所以J***a的性能还受JVM的配置影响。
而C/C++编译的程序是不需要跑在虚拟机上的。
都说搞底层和算法的才厉害,学J***a的感到自卑,怎么办?
造宇宙飞船的厉害吧,但里面是不是也有很多只是拧螺丝的。
搞算法的鄙视做工程的,
写后台的鄙视做前台的。
用 Mac OS X 的工程师鄙视用 Linux 的工程师,
用 Linux 的工程师鄙视用 Windows 的工程师。
C 语言工程师鄙视 C++ 工程师,
C++ 工程师鄙视 J***a 和 C# 工程师,
搞底层和算法,不就是造“轮子”嘛。但这个轮子真不是***可以造的。你对造轮子有***吗?看Knuth的《计算机程序设计艺术》可以看到兴奋地飞起。忍不住要优化一些算法。如果只是想着造“轮子”,可以变得更厉害,看起来更酷。那我劝你就算了。因为你觉不可能从中找到乐趣,[_a***_]乐趣,是无法持之以恒的。
但是做软件应用的你以为就不可能厉害么?大错特错。真正要做好应用,也是很难的。只是大家术业有专攻。千万不要眼高手低,对自己要有正确的评估,做自己适合的方向,然后做到极致。
算法,看上去高大上,实际上也是编程,基本上也是依据已经有的算法理论来写的,作为J***A,是一种语言,多用于业务方面的开发,算法里面用到的成分很少,这两者应该是不属于同一种层面的东西!
当然,如果作为程序员你又懂算法,自然会让自己的程序看起来更高效,但这不应该转化为对语言的歧视!因为J***a底层也是基于很多算法的实现的,J***a本身也可以实现很多算法!如果说能形成鄙视的,绝对是理论层次的鄙视,而不是编程上面的歧视!
所谓理论上的鄙视,是那些创造算法的理论者对开发人员的歧视,因为算法是他们那些搞算法理论的人提出的,但他们并不是在那些在实际意义中实现算法的人!算法的提出者和实现者不一定是同一个人!而前者才是具备开创性的,后者不存在对任何开发者歧视的基本理由!因为他也是开发者,为什么会存在这些算法的开发者对程序员的歧视呢?
答案是在于整个社会的需求,真正的,算法的需求人数不高,因为优秀的算法都会成为固定的框架来供其他开发者使用,但由于学习算法要比学习编程要付出更多逻辑能力的思考,而且很多也不是类似程序的线性思维,这就造成了从整个宏观角度,对算法开发人员对其他开发人员(程序员)的歧视!简单直接的说,搞算法开发的比搞业务开发的薪资高,但需求量并不大,算法开发的大多来自于高校的校招,而业务开发社招的比例会更大一些,算法属于专业程度比较高的,编程是***可以学的!
总归不能一棒子打死,任何的职业都只是职业,不存在不平等,有些人爱思考,喜欢琢磨,也懂专业知识,但他不想从事那么费脑力的工作,于是乎就选择简单点的业务方面的开发,有何不可?
歧视这种事是压根不存在的,存在的是自己的自卑心理,如果你好学,任何的东西可能都不在话下!如果你只是想为了工作,那就不比给自己太大的压力去掌握那么多高深莫测的东西,毕竟也可能只有少数人适合那样高脑力工作!总之,根据自身的情况来,不必在意其他人看法!
相比ios,安卓系统的执行效率为什么比较低?
在悟空问答上的599个问题,只写接地气的科技内容,欢迎关注。
喜闻乐见的问题,其实目前由于硬件性能的过剩,安卓手机已经不像是过去那样速度比IOS系统有明显的差距了,尤其是去年90赫兹高刷新率屏幕的加入,更是把整体的流畅度提升到了一个新的阶段。
如果你非要纠结于为什么IOS和安卓在运行速度上有差异,那么我这里只能从处理器、系统运行机制、软件交互三个方面来回答。
通常只要了解电脑的人,或多或少应该都了解一些手机的运行机制。处理器、RAM、ROM,其中RAM是我们通常说的内存、运存;ROM是我们通常说的硬盘。
因此从上面的理论我们可以得到一个就是说:处理器的性能越好,单位时间可以处理的任务就越多;RAM内存的越大,可以装下的运行文件就越多,同时运行的程序也就越多。
但是我们会经常忽略一个问题就是:计算机内的数据处理是万分之一秒来计算的,如果要从RAM里面读取文件来处理,查询执行的命令和中间的传输是很慢的。因此,在处理器设计里面,会另外单独为处理器准备缓存,分为1级缓存和2级缓存,有的会配备3级缓存。
拿iPhone的A12芯片举例,1级缓存的大小是128K,2级缓存的大小是8M,而同时期高通骁***55的1级缓存是64K,2级缓存是512K。你不要嫌小,在处理器这种按照纳米为单位的地方,缓存每增加一倍,就需要付出极大的成本。而处理器自身缓存的作用,就是将需要处理的数据提前载入,可以跟处理器运行同步,做到几乎0延迟。处理器需要运行文件,先从1级缓存里面找,再从2级缓存里面找,最后才是RAM里面找。
缓存设计上的差异,导致安卓手机芯片经常需要等待从RAM中调取数据,从而增加了数据处理等待的时间。生动一点来说就是同样是吃饭,苹果是插了一根管子直接到胃里面,把食物倒进去;安卓这是放在碗里面,一勺一勺放到嘴里。
到此,以上就是小编对于j***a语言效率低的问题就介绍到这了,希望介绍关于j***a语言效率低的5点解答对大家有用。