C# 与 C 、 C++ 、 D 、 Java 的性能比较(三)

这篇博客对比了C#、C、C++、D和Java在浮点到整型转换、整型到字符型转换、字符型到整型转换、计算π、递归执行和质数筛选等场景下的性能。结果显示,C#在某些特定转换上表现出色,但在其他如字符串操作和递归等方面较弱。Java在浮点到整型转换中效率较低,但在整型到浮点转换上表现最好。C、C++和D在某些测试中展现出更高的性能,尤其是在涉及内存管理和低级别操作的部分。
摘要由CSDN通过智能技术生成

C# 与 C 、 C++ 、 D 、 Java 的性能比较(三)

(文章转自http://mag.vchelp.net)jason

f2i 抛开Intel不谈,可以看出C#在浮点到整型的转换中效率远远高于其余四个,仅是C,C++, 和D开销的2/3,是Java的2/5。在我让它们使用相同的随机数发生器前,不同语言的性能差异极大,这说明转换速度非常依赖具体的浮点数值,当然这是后见之明了。为了确保每个语言做相同的转换,程序计算转换值的总和,这也有助于任何过度的优化去除整个循环。可以得知这种转化在语言间正确度不同。每种语言的计算总和迭代10,000次的结果在表3中列处。它们表明(虽然无法证实)C,C++,和D是最正确的,Java其次,C#最差。C#牺牲正确性和降低处理器浮点精度(参见 引用)换取优越性能是令人信服的,但事实上做此判断前我还需要更多的证据。至于Intel,说它的性能没有什么更卓越的也是公平的。


5个语言这里效率相当。另4种性能比C#低5%以内。唯一叫人感兴趣的是这四个语言都是性能比C#略好。这表明C#确实效率低,虽然在这方面只低一点。这与从整型到浮点型转换的结果相反。同样,值得我们注意的是,虽然Java在浮点到整型的转换中性能很低,但在整型到浮点的转换中却是最好的,比C#高10%。对f2i,Intel表现极佳,其C和C++分别只用了C#时间的10%和23%。

i2str 整型到字符型的转换。 C#比C和D的printf略好。比C++的以iostream为基础的转换效率要高。它是C#运行时间的4倍(对Intel 和VC6 STL/CRT是5倍)。但Java性能出色,用了C#2/5的时间。因为C++的效率低下,第二个变量使用STLSoft的 integer_to_string<> 模板函数。它在很多编译器上比C和C++库的所有可利用的转换机制要快。在这种情况下,性能比C#高10%,比C和D高约20%。但是因为Intel编译器的优化影响, integer_to_string<> 似乎找到了其完美搭档:其时间比C#低30%,是第三个速度超过Java的,比Iostream快17倍以上。认为它很可能已经接近了转换效率的上限也是合理的。

str2i 字符型到整型的转化结果与前面大相径庭。 C和D用atoi比C#快约5-8倍,比Java快3倍,Java比C#效率高得多。但是这四个比C++以iostream为基础的转换都快。C++用 Digital Mars/STLPor运行时间t 是 C#的2.5倍,用 Intel和VC6 CRT/STL 是 10倍。这是iostream的另一个致命弱点。但因此说C++效率低下未免有失公允(实际上,我正在为 STLSoft 库写字符至整型的转换,以和它 integer_to_string<> 的杰出转换性能相匹配。最初的结果表明它将优于 C的atoi,所以这个转换中C++也是优于C的。我希望能在本文刊发前完成此转换。请参阅 http://stlsoft.org/conversion_library.html 。 )

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值