C#的性能到底有多差?
这篇文章带领大家来看看c#的性能问题。当然了,作为比较的选手是c/c++。
首先说说测试环境:
操作系统:win7 旗舰版
内存:2GB
硬盘:160GB
处理器:Intel Pentium Dual CPU T2330 @ 1.60GHZ
本文打算基于以下几个方面讨论:
1.CPU使用情况;
2.内存使用情况;
3.基本类型的四则运算能力;
4.数学函数运算能力;
5.I/O操作能力;
6.数组运算能力;
7.异常处理能力;
8.STL vs FCL;
9.算法HeapSort;
10.矩阵乘;
11.嵌套for循环;
12.字符串连接。
接下来,我们一个一个详细地说:(注,测试程序都是直接运行编译后的exe)
1.CPU使用情况
在程序的整个运行过程中,两者的CPU占用情况都在50%上下浮动,算是不分上下。
2.内存使用情况
这里列一 组程序执行过程中我记录的数据:
c/c++:216kb,832kb,904kb,944kb,1336kb。
c#:1972kb,1980kb,2000kb,2372kb,3024kb,5156kb。
通过这组数据,不难发现,在内存使用方面c#可算是一败涂地。注:
希望有人能解释下c#为什么会出现这种一路飙升的情况呢?!
3.基本类型的四则运算能力
费话不多说了,上代码:(注,所有的图中时间单位均为毫秒ms)
c/c++的:

针对int的
c#的:

针对int的
对比结果见下图:

c/c++的:

针对double的
c#的:

针对double的
对比结果见下图:

c/c++的:

针对long的
c#的:

针对long的
对比结果见下图:

通过以上数据,发现两者对基本数据类型的操作性能差不多,属于同一个数量级。
同时,注意到,c#针对int型的性能要优于c/c++。
4.数学函数的运算能力
c/c++的:

常用数学函数
c#的:

常用数学函数
对比结果如下图:

通过数据,我们发现c#在计算sin、cos、tan、log、sqrt等数学函数方面明显
优于c/c++。大家以后注意了哦……
5.I/O操作能力
c/c++的:

写文件、读文件
c#的:

写文件、读文件
对比结果见下图:

通过数据,我们发现c#的性能略优于c/c++。
6.数组运算能力
c/c++的:

数组基本操作
c#的:

数组基本操作
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)