主题:【原创】Java和.NET哪个运行的更快? -- Highway
其任务很明确:将程序员从繁琐枯燥的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++一直是微软的看家工具,这很说明一个问题,不是吗?
- 相关回复 上下关系8
Garbage collector的效率 moridin 字938 2005-05-27 11:01:49
我来举个实例,支持垃圾收集器 1 睡虫 字692 2005-05-26 20:59:03
😁看来睡虫女侠是主管一级,牛! Highway 字0 2005-05-27 07:17:36
Garbage collector是Java,.NET的核心部分之一。
🙂求教一下 懒厨 字198 2005-05-25 16:17:42
😁把这个问题搞清楚了,.NET的GC你就门清了。 Highway 字177 2005-05-25 18:51:05
先谢再看! 懒厨 字0 2005-05-25 18:55:23
很精彩的对比! 懒厨 字0 2005-05-24 17:42:00