Java真的很慢吗?

Java真的很慢吗?,java,performance,Java,Performance,Java已经成功了 Java真的很慢吗 若有,原因为何?瓶颈在哪里?这是因为JVM效率低下吗?垃圾收集?纯字节码库而不是JNI包装的C代码?许多其他语言都有这些特性,但它们没有缓慢的名声 java是一种高级语言,它现在的声誉是与其他可比较高级语言的性能相当。 它有语义。与C++相比,非虚拟方法被编译为函数调用,即使是世界上最好的java编译器也必须产生效率较低的代码。但它也是一种更干净、更高级的语义 我不记得细节了,但在Java的早期,我听说每个Java对象都有一个互斥体,每个方法都要获取

Java已经成功了

  • Java真的很慢吗
  • 若有,原因为何?瓶颈在哪里?这是因为JVM效率低下吗?垃圾收集?纯字节码库而不是JNI包装的C代码?许多其他语言都有这些特性,但它们没有缓慢的名声

java是一种高级语言,它现在的声誉是与其他可比较高级语言的性能相当。

  • 它有语义。与C++相比,非虚拟方法被编译为函数调用,即使是世界上最好的java编译器也必须产生效率较低的代码。但它也是一种更干净、更高级的语义

  • 我不记得细节了,但在Java的早期,我听说每个Java对象都有一个互斥体,每个方法都要获取和释放。这会使它更好地适应并发性,尽管不幸的是,每个对象只使用互斥锁无法保护您免受竞争、死锁或并发程序中可能发生的任何不良事件的影响。这一部分,如果是真的,有点幼稚,但它来自善意。如果你对这方面有更多的了解,请随时告诉我细节

  • Java成为高级语言的另一种方式是拥有。对于一次分配所有所需内存并使用这些内存的程序,垃圾收集可能比
    malloc
    free
    慢。问题是,在没有垃圾收集的语言中,程序员往往只编写一次分配所有所需内存的程序,如果某个任意最大大小常量溢出,程序就会失败。因此,比较是苹果和橙子。当程序员努力用非GC语言动态分配链式结构来编写和调试程序时,他们有时会发现他们的程序不再比GC语言快,因为
    malloc
    free
    不是免费的!他们也有开销。。。另外,没有GC会强制指定谁释放什么,而必须指定谁释放什么又会强制您进行复制-当几个函数需要数据并且不清楚最后使用数据时-而在GC语言中复制是不必要的


  • 这是Java早期(20世纪90年代中后期)的过时信息。与以前的版本相比,Java的每个主要版本都引入了显著的速度提升。随着Oracle显然将JRockit与Sun的Java 7 JVM合并,这一趋势似乎将继续下去


    与许多其他流行的现代语言(Python、Ruby、PHP)相比,Java在大多数应用中的速度要快得多。它不太匹配C或C++,但是对于很多任务来说它足够接近。真正的性能问题应该是它最终使用了多少内存。

    最初Java不是特别快,但也不是太慢。现在,Java速度非常快。从我与之交谈的人看来,Java速度缓慢的印象来自两个方面:

  • VM启动时间慢。与本机应用程序相比,早期Java实现启动和加载require库和应用程序花费了很长时间

  • 缓慢的用户界面。早起很慢。大多数Windows用户发现默认的金属L&F也很难看,这可能也于事无补

  • 鉴于以上几点,难怪人们会有“Java很慢”的印象

    对于习惯于开发本机应用程序甚至应用程序的用户或开发人员来说,这两点是应用程序中最明显的东西,这是您对应用程序的第一印象(除非它是非GUI应用程序,在这种情况下,只有1.适用)

    当应用程序需要8秒启动时,您无法说服用户“它执行代码的速度非常快”,而他的旧Visual Basic应用程序则会立即启动,即使代码执行和启动时间可能根本没有联系

    破坏第一印象是制造谣言和神话的好方法。谣言和神话很难消除


    简而言之,Java并不慢。“java慢”是基于10多年前java的第一印象。

    < P> >在90年代中期,java进入主流时,C++是主流语言,Web仍然相当新。而且,JVM和GC是主流开发中相对较新的概念。早期的JVM有点慢(与在裸机上运行的C++相比),并且也遭受了一些长时间的垃圾收集暂停,这导致java的声誉很慢。

    < P>正如Pascal所说,java与其他高级语言是一致的。然而,作为在上使用原始JVM的人,我们可以说,当时Java虚拟机提供的抽象级别是痛苦的


    基本上,我们今天在JVM中认为理所当然的是很少或根本没有优化的软件仿真。它已经变得快得多了,因为。据我所知,它通常在C#speed的10%以内——有时快,有时慢

    Java小程序的启动仍然很慢,因为您必须启动整个JVM,而JVM必须加载它的所有类。有点像启动另一台计算机。JVM一旦启动,速度相当快,但启动通常是人们记忆中的


    还有一些人永远不会相信Java的可行性。

    现代Java是速度最快的语言之一,尽管它仍然是一种内存消耗型语言。Java以速度慢著称,因为虚拟机启动需要很长时间

    如果您仍然认为Java很慢,请参见结果。用提前编译语言(C、Fortran等)编写的经过严格优化的代码可以击败它;然而,Java的速度可以是P的10倍多