动态语言开发效能的一个案例研究

        现在越来越多的人开始承认动态语言在开发效能方面的优势,但是应该说这还只是停留在人的感觉上,缺乏客观、量化的证据。当然,真正要做到客观的比较是不可能的。一个团队开发一个具有一定规模的软件项目,这是一个复杂的过程,牵扯到的各方面因素很多,不可能做到完全客观、仅仅针对开发语言本身效能的比较。但是,为数庞大的开源软件项目当中,挑出一些使用不同语言开发的目标相同的项目,并且对其开发效能做一个比较,这是可能的。尽管这种比较未见得公允,但是仍然具有一定参考价值。

        我看到的一个比较有意义的比较是在C、Java和Python三种语言之间进行的,目标都是开发符合SSH服务端协议的软件包。这是一个具有相当技术性且有一定规模的任务,由各语言的专家级开发者完成,因此具有可比性。相关数据如下(截至2003年):

C语言:OpenSSH,直接基于Unix系统服务,从1999年开始开发,4年之后共有64,000行C源代码。2003年时,开发者列表上共有84人。平均每人写了762行代码,也就是190.5行/人年。

Java语言:J2SSE,基于Java 1.3 Standard版提供的API,从2002年初开始开发,由SUN官方支持,2003年拥有20,000行Java源代码,开发者7人,平均每人2857行代码,1428.5行/人年。

Python语言:Conch,基于Twisted Framework,项目起点时间不详,大致为2002年中,到2003年共有5,000行源代码,开发者1人,约4000-5000行/人年。

        这个数据可以给大家评估动态语言的效能做一点参考。需要注意的是:

1. C语言版的OpenSSH本身就带有探索性质,所以开发周期较长。
2. OpenSSH开发者虽然多达84人,但是一般来说开源项目中起核心作用的开发者一般在6-8人左右,很可能这几个人贡献了大部分代码,因此上面对C语言开发效能的评估严重偏低。
3. Conch本身架构在Twisted之上,后者是一个高层的网络开发框架,本身也是具有6万行代码规模的项目。Conch的高效能很大程度上受惠于此。
4. J2SSE是Sun官方开发的项目,其开发方式不同于开源松散的开发方法,因此上述得到的开发效能可能被高估。

        综合以上的考虑,我认为从这个case study中得出三种语言开发效能的比大致在1:4:10的估计值。

        附带一提,据Twisted文档宣称,Conch的运行时性能并不逊色于OpenSSH。在同一台计算机上,OpenSSH每秒钟可接纳3个连接,传输速度7.4MB/s。而纯Python实现的Conch每秒钟可接纳8个连接,传输速度3MB/s。经过Psyco编译优化后,每秒钟可接纳11个连接,传输速度8.1MB/s。

        请注意,这是2003年的数据。

        本文主要素材来源与Twisted创造者Glyph Lefkowitz发表在USENIX 2003会议上的论文,题为《Network Programming for the Rest of Us》,并在此基础上进行了一些历史资料调查。关于开发年限的调查可能有误,希望得到有识之士的纠正。
评论 45
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值