掺和比试

本文通过实际测试,对比了多种编程语言(包括C++、Java等)在特定渲染任务上的性能表现,并分析了不同编译器及内存管理方式对效率的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Milo老师搞了一个语言大比试——《C++/C#/F#/Java/JS/Lua/Python/Ruby渲染比试 》。我觉得挺好玩的,本来早就想掺和,只是最近比较忙,现在真是来晚了。

不过也没什么能掺和的,因为Milo老师的比试已经很全面了,我也就是提供一点自己的测试数据罢了。

硬件:Intel Q8200 2.33G/4G RAM

软件:Windows 2003 Server

说明:为便于与Milo老师的结论作参照,我这里以GCC版本为基准计算对比系数,其中括号内为換算到Milo老师环境中的相对比值。

语言编译器耗时对比内存
C++(OpenMP)GCC 4.3.4 in Cygwin (32-bit)5.6470.27x(0.36x)4M+
C++GCC 4.3.4 in Cygwin (32-bit)20.6401.00x(1.32x)4M+
C++Microsoft Visual C++ 2010 学习版22.5931.09x(1.44x)2M+
C++GCC 3.4.5 in MinGW (32-bit)51.1872.48x(3.27x)2M+
JavaJava SE 1.6.0_1055.6252.69x(3.56x)70M+
C++Embarcadero C++ Builder 201055.7662.70x(3.57x)3M+
C++Borland C++ Builder 6.063.2653.06x(4.05x)3M+

VC学习版不提供OpenMP支持,GCC 4.2以前的版本也不支持,BCC更不用说,故OpenMP只试了Cygwin。

增加了一列内存使用情况。基本上C++都差不多,Java则明显多得多。因为这个程序中涉及大量(数以十亿计)的小object的创建和删除,JAVA的GC回收内存有一定的滞后性,所以运行时内存占用得会多一点,当然这也有个好处就是节约了不断回收小内存所花费的时间,对速度有一定的帮助。

从结果上看新版本的C++编译器对于代码的优化还是很明显的,同样是GCC,Cygwin的4.3.4就比MinGW的3.4.5好得多——当然BCC是个例外,最新版本的速度也没有超过JAVA。

在研究过这个程序的代码以后发现,这个程序对内存管理的要求还是挺高的,对于有GC的VM语言或动态语言来说,实现起来会比较方便,C++的栈对象用起来也还不错(运算符重载更是方便),不过要是用C或DELPHI之类内存需要自己管理的语言就杯具了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值