很古老的一篇文章,但是结果很有启发性, 指出了几种语言性能差别到底在什么地方, 不过测试版本都比较老, 所以只节选了前面一段 。
测试环境
AMD Athlon XP 2200+
1024 MB DDR 266
VIA KT266A
Windows XP Prof. + SP1
Java 版本
Java 1.4.2_03
Java 1.5 (alpha, 11. Dec. 03)
编译选项: -g:none
运行参数: -mx1024m
C# 版本
.Net Framework 1.1.4322 (Microsoft (R) Visual C# .NET Compiler version 7.10.3052.4)
编译选项: /optimize+ /debug- /checked-
运行参数:
C++ 版本
Microsoft Visual Studio Net 2003 (Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86)
编译选项: /O2 /Oi /Og /Ot /EHsc /arch:SSE
Intel(R) C++ Compiler for 32-bit applications, Version 8.0 Build 20031017Z
编译选项: /fast /G6 /Oi /Og /Ot /EHsc /arch:SSE
运行参数:
源代码
原始的源代码
http://www.cowell-shah.com/research/benchmark/code
http://www.bagley.org/~doug/shootout
修改后的源代码
测试结果
最大内存用量:
Java - 163 MB
C# - 111 MB
Cpp - 98 MB
时间单位 毫秒
C++最快,但是STL hashmaps 的慢了很多,memory footprint
C#很快,但是在处理异常,矩阵乘法和循环嵌套上面有些问题
JAVA 的hashmaps最快, 而且异常处理很强悍
C++最快,但是java和C#的开发速度比C++快很多,总之有得必有失