五千年(敝帚自珍)

主题:【原创】Java和.NET哪个运行的更快? -- Highway

共:💬24 🌺19
分页树展主题 · 全看首页 上页
/ 2
下页 末页
          • 家园 Garbage collector是Java,.NET的核心部分之一。

            其任务很明确:将程序员从繁琐枯燥的Memory Management任务中解放出来,让他们把精力集中到要完成的任务本身上去。

            Java和.NET的研制人员都考察过现有的C++的问题。其中资源管理不当是C++程序Bug的一个最主要来源。并且在很多时候这些Bug非常难发现和修改,比如memory leak,有时候要运行很长时间才有可能重现问题。That's really hard to track and debug。

            狂扁Garbage collector的C++程序员们都认为自己是C++ guru,那些错误他们根本不会犯。事实上是不是这样我就不知道了。就我个人经历而言,真正的C++大牛都是非常Open minded的。Java以及.NET的设计者都是C++/Unmanage Code出身的,他们之所以创建Java和.NET是因为他们感受到了C++的问题,想提供一个更安全,工作效率更高的环境给广大的程序员。事实上,Java, C#都可以看作是C++派生出来到语言。认为Java和C#是一种倒退是可笑的。

            Java以及.NET并不适合所有的任务,C++也是。比如开发Web程序,C++就不合适。而写Device Driver,Java以及.NET就不能胜任。

            Garbage collector帮我们解决了很多问题。但并不是程序员从此就不需要考虑资源管理问题了。事实上,有些问题还是很tricky的。比如你是用C#写程序,是不是要给你的Class提供Finalize() Method就是一个难度很大的问题,它极大的影响GC的工作。但我估计很少有人考虑过这个问题。

            Garbage collector的内存管理效率比C/C++低吗?这个问题也很难回答。在memory allocate一端,GC非常快,比C/C++还快;在确认un-reachable object, reclaim memory以及Re-arrange heap上GC要花一些时间,对程序性能有影响。所以你的程序最终表现如何,要看你的程序特性了,比如GC是不是要频繁出动。GC在时间上的不确定性对不少应用造成了一些困难,尤其是Java。但对于绝大多数应用而言,我不认为那是一个问题。

            微软现在已经将重心转移到了.NET上,虽然Visual C++一直是微软的看家工具,这很说明一个问题,不是吗?

    • 家园 很精彩的对比!
      • 家园 以后大家还要多切磋才好啊!
        • 家园 切磋切磋

          其实小弟对技术性的对比,有点不以为然。

          小弟的开发哲学,是不贪心,够用就行。以目前的硬件来看,愚以为不会有太多的应用程序非得用某种平台(.Net/Java)开发不可,不必太过斤斤计较某些部位的速度。而且,某部分的速度优势,又很容易被差劲的设计,二流的程序员抵消。

          不过,这种对比,对搞技术的人来讲,还是很过瘾的。

          • 家园 你的话没错。人的素质是非常关键的,即使使用了Java或是

            .NET,素质不高的程序员一样能写出来buggy的程序,一样可能有memory leak,虽然有Garbage collector替你负责管理内存。

            我之所以关注着两种技术,一是因为工作中可能会遇到,更主要的是我认为这两个阵营中都有牛掰巨擎,IT泰斗。看这些Great mind在尽力厮杀实在是过瘾,欲罢也难啊!

分页树展主题 · 全看首页 上页
/ 2
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河