这篇文章带领大家来看看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#的:

数组基本操作

Logo

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

更多推荐