主题:【原创】Java和.NET哪个运行的更快? -- Highway
与程序类型/风格有关.最早使用Garbage collector
的是Functional languages. 这类语言的程序有大量
short-lived small objects, Garbage collector很
有兢争力.Mark-and-sweep虽然可能比malloc/free
慢一点,但是可以有效解决fragmentation.Copying
collection(尤其是generational GC)则进一步在速度上
也有一争.
另外,比较效率也要从整体上比.举一个例子.我正在
写的一个程序有一个producer和多个independent consumer.
每个object都要接收多个consumer的处理,也可能被一个
consumer传给另一个consumer,还可能需要存下来.如果没有GC,要么用
single-thread固定流程,要么create one copy for each consumer,
要么每个consumer都要执行reference-counting routine以
决定是否free一个object.每个选择都对系统的结构/效率有不
好的影响.
我觉得GC被贬的原因主要有:
1. GC 不适合memory-scarce environment.
2. GC memory footprint 较大影响cache效率. (不过对绝大多数
人, 包括C programmers, 比cache效率大的问题多了去了.)
3. 早期GC implementation对Stack处理不好造成retention.
本帖一共被 1 帖 引用 (帖内工具实现)
- 相关回复 上下关系8
压缩 3 层
现在计算机的处理能力的增长速度已经大大地减慢了。 lionel 字42 2005-05-27 17:11:44
送花。感觉你偏爱java。一个Garbage collector问题。 wsxx 字154 2005-05-25 07:35:15
其实C++中使用Smart pointer 无斋主人 字115 2005-05-31 16:55:21
Garbage collector的效率
我来举个实例,支持垃圾收集器 1 睡虫 字692 2005-05-26 20:59:03
😁看来睡虫女侠是主管一级,牛! Highway 字0 2005-05-27 07:17:36
Garbage collector是Java,.NET的核心部分之一。 1 Highway 字1611 2005-05-25 10:36:06
🙂求教一下 懒厨 字198 2005-05-25 16:17:42