注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

为着理想勇敢前进

 
 
 

日志

 
 

D 、 C++ 、 Java 三种语言的比较  

2007-09-22 16:20:54|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
分值项目D 2.0 / Tango + MangoC++ 98 / STL + BoostJava 6.0
11 IDE4 较差6 Windows 平台尚可,Linux 平台无好用的 IDE11 极好
16 编译速度16 0 16
4 函数式编程3 支持匿名函数2 STL 有许多基于函数对象的算法,但语言自身不支持匿名函数,而 Boost.Lambda 不很方便。2 支持匿名类
4 模板元编程4 有完善的支持2 语言本身有支持,但缺少高级语法。用 Boost.MPL 能做到需要的功能,但晦涩冗长。0 有泛型,但根本没有真正的模板
18 性能18 极好18 极好10 HotSpot 可以运行时编译,本身生成的机器码运行很快。但缺乏底层直接操作内存的能力。没有办法在栈上构造对象,频繁的动态内存分配可能有损性能。用 JNI 调用本地代码也会带来额外的开销。
13 垃圾收集10 有不精确的垃圾收集,没有内存整理0 13 有精确垃圾收集,会自动进行内存整理
9 单元测试
9 语言内置,极其易于使用4 有一些单元测试框架,但使用不够方便。编译速度慢也使得单元测试更难使用。7 有 JUnit 、 TestNG ,和 IDE 配合的比较好
6 容器64 有,但没有广泛可用的哈希表的标准实现。6
2 XML2 02
2 文本解析1 语言内置正则表达式2 Boost.Xpressive 和 Boost.Spirit ,极其强大的解析框架1 有正则表达式库
6线程和并发2 有线程、锁和协程(在 Tango 以 Windows 的方式叫作 Fiber),没有线程池和基于消息的定时器 4 有线程和锁。协程库(Boost.Coroutine)尚未加入 Boost ,而且已经停止开发。线程池和基于消息的定时器可以用Boost.Asio 做到 3 有线程、锁、线程池和基于消息的定时器,没有协程
3同步 IO 流333
6异步网络 IO1 有基于 select / epoll 的实现,仅仅只是 C API 的简单包装,使用不很方便。在 Windows 下用的是最糟糕的 select ,非常受限;在 BSD 没有用 kqueue6 有极好的网络库 Boost.Asio4 有 nio ,在 Windows 用的是 WSAEventSelect,而没能发挥完成端口的威力
100总分79
51
78
C++ 差距这么大的原因是我给垃圾收集和编译速度的权重很大,这两样正好是 C++ 缺的。
这个比较其实最终的结果没什么意义,因为不同的领域,这些东西的权重是不一样的。
  评论这张
 
阅读(305)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018