在下面的网址看到了使用MS的CL、gcc、Intel的icl、PGI的pgcc及Codegear的bcc 几个不同编译器编译的C/C++ 程序性能对比,结论是Intel的编译器性能最高。

http://www.zxbc.cn/html/20081119/67961.html

同样把这段Intel的SDK中的代码迁移到C#中比较一下

我的笔记本是:Intel Core4 P8700 2.53G的CPU, 4G内存,Win7 64bit系统,VS2010自带的编译器

对于代码略作调整和注释

C++代码

//intel的性能测试例子
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h> //为cin cout 提供
#include <iostream>
using namespace std;#define INTEG_FUNC(x) fabs(sin(x)) //计算公式double dclock(void); int main(void)
{ unsigned int i, j, N; double step, x_i, sum; double start, finish, duration, clock_t; double interval_begin = 0.0; double interval_end = 2.0 * 3.141592653589793238; start = clock(); //初始时间printf(" \n"); printf(" Number of中文 | Computed Integral | \n"); //Win7下中文显示正常printf(" Interior Points | | \n"); for (j=2;j<27;j++) {  N = 1 << j;step = (interval_end - interval_begin) / N; sum = INTEG_FUNC(interval_begin) * step / 2.0; for (i=1;i<N;i++) { x_i = i * step; sum += INTEG_FUNC(x_i) * step; } sum += INTEG_FUNC(interval_end) * step / 2.0; //printf(" %10d | %14e | \n", N, sum); printf(" %14e  \n", sum); } finish = clock(); //结束时间duration = (finish - start); printf(" \n"); printf(" Application Clocks = %10e \n", duration); printf(" \n"); int tempA;cin>>tempA;return 0;
} 

默认编译参数,都是Release编译后,拿出exe文件独立运行

32bit C++     6338ms

C# 代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace ConsoleApplication1
{class Program{static void Main(string[] args){int time = System.Environment.TickCount;  //添加计时器#regionint i, j, N;double step, x_i, sum;double start, finish, duration, clock_t;double interval_begin = 0.0;double interval_end = 2.0 * 3.141592653589793238;for (j = 2; j < 27; j++){N = 1 << j; step = (interval_end - interval_begin) / N;sum = Math.Abs(Math.Sin(interval_begin)) * step / 2.0;for (i = 1; i < N; i++){x_i = i * step;sum += Math.Abs(Math.Sin(x_i)) * step;}sum += Math.Abs(Math.Sin(interval_end)) * step / 2.0;Console.Write(sum.ToString()+"\r\n");}Console.Write((System.Environment.TickCount - time).ToString());Console.ReadLine();#endregion}}
}

32bit C#  命令行   5382ms

32bit C#  WinForm  5351ms

都是重复测试了5次,最大最小误差少于30ms

从左到依次为:32bit C++、 32bit C#命令行、 32bit C#WinForm

C#的竟然比C++快了1秒。

再看看64bit的,64bit C++ 3696ms, 64bit C#  5382 ms

从左到右依次为:

64bit C++, 32bitC++, 64bit C#

可见该程序64bit 编译时,C++的性能大幅提升,C#的几乎不变。

两个计算精度应该相同,C++是因为输出的格式科学计数法隐藏了后面的小数

结论:

1. C# 在WinForm和命令行中,数学计算性能相当

2. 32bit下C#的性能还不错,若能在64bit下编译器也能充分优化达到C++那样的提升就好了。

杨韬的学习备忘录 YTYT2002YTYT

http://www.cnblogs.com/ytyt2002ytyt/archive/2011/11/24/2261104.html

转载于:https://www.cnblogs.com/ytyt2002ytyt/archive/2011/11/24/2261104.html

64位/32位 C++/C# 数学计算性能对比测试相关推荐

  1. win10系统下载中文版 64位32位 官方版​

    win10系统下载中文版 64位&32位 官方版 软件大小:4.9GB 软件语言:简体中文 软件类别:操作系统 软件授权:官方版 更新时间:2015-01-22 应用平台:/Win8/Win7 ...

  2. C++判断系统位数(64位或32位)

    C++判断系统位数[64位或32位] 实现方法 原理 函数 实例 总结 实现方法 本文主要介绍1种兼容性强&简单的判断方法,希望对你有帮助; 原理 64位系统会在c:\Windows创建Sys ...

  3. 微软官方原版win7(64位/32位)旗舰版系统下载

    http://blog.sina.com.cn/s/blog_541caaee01014q8t.html 好多友友一直在问,需要微软官方win7系统,特别是64位win7旗舰版由于联想官方(其他品牌相 ...

  4. 64位计算机 内存,Win7 64位/32位系统支持多大内存?64/32位系统有什么区别?

    Win7 64位/32位系统支持多大内存?计算机上不同的操作系统对内存的支持是有限度的,且因为主板.CPU的存在,这样的限制只会更小,但还在用户可以接受的范围内.想知道什么原因限制了内存极限吗?请看下 ...

  5. [解决]尝试安装时出现“无法安装 Office(64 位或 32 位)”错误

    [解决]尝试安装时出现"无法安装 Office(64 位或 32 位)"错误 出现这种错误大概率是因为电脑安装了office 没有卸载干净. 网上比较多的方法是删除注册表编辑器中的 ...

  6. cad2014 64位32位 免费中文版

    cad2014 64位&32位 免费中文版  软件大小:1.31GB 软件语言:简体中文 软件类别:图像制作 软件授权:免费版 应用平台:/Win8/Win7/WinXP 最大的改进就是新增了 ...

  7. Windows8简体中文 旗舰版 专业版 64位 32位 全系列 及win8 神key

    Windows8简体中文 旗舰版 专业版 64位 32位 全系列 及win8 神key (2012-08-20 16:16:53) 转载▼ 标签: windows8 简体中文 旗舰版 专业版 64位 ...

  8. 创世贴|怎么在64或32位系统中运行16位程序《大富翁》

    创世贴|怎么在64或32位系统中运行16位程序<大富翁> 绪言 大家好!纵观游戏行业的发展,可谓是进步迅猛.百花齐放.游戏是每个人在学习.工作之余休闲娱乐的良药.玩游戏的人从皇宫贵族到社会 ...

  9. winrar5.40官方无广告版及key 46位 32位都有 64位注册方法,rarreg.key

    如标题所述WinRAR一直都是很经典的一个解压和压缩软件,但是度娘搜索下载的绝大部分都有广告.这个就尴尬了.                                             很 ...

  10. Win7可用的笔记本电池校正软件( 64、32位)

    Win7可用的笔记本电池校正软件( 64.32位) BatteryMon2.1-Win7可用.rar (258.7 KB)

最新文章

  1. 为什么双层循环 冒泡排序_冒泡排序的双重循环理解
  2. linux下安装监控网络流量工具Iptraf
  3. 危机下,你还敢提加薪吗?
  4. Hadoop运维记录系列(十七)
  5. 在Asp.Net Core中使用ModelConvention实现全局过滤器隔离
  6. Infinite Fraction Path UVALive - 8207
  7. HTML5 音频视频
  8. 图论 —— 图的连通性 —— Tarjan 求割点与桥
  9. bzoj 1552: [Cerc2007]robotic sort bzoj 3506: [Cqoi2014]排序机械臂(splay区间翻转)
  10. 该网站可能含有恶意软件,有可能会危害您的电脑 清除办法
  11. C语言之父Dennis Ritchie告诉你:如何成为世界上最好的程序员?
  12. 【物联网控制技术复习】【复数的概念】【拉普拉斯变换】
  13. 基于MATLAB的人脸识别
  14. 【python】websockets
  15. 最新MQ与RabbitMQ面试题
  16. SEO新手一分钟入门教程
  17. 记录:如何解决Ubuntu20.04无法联网问题【亲测有效】
  18. a该内存不能为“read”或“written解决方案
  19. android点击号码打电话,android-拨打电话单击一个按钮
  20. 类和对象的定义和关系

热门文章

  1. Hibernate程序性能优化的考虑要点
  2. WHY MAKE ANOTHER APPLICATION AT ISSM?
  3. 剑桥大学Raven系统
  4. 什么是最重要的事情?来自长辈的教诲
  5. 程序猿的英语之ielts indicator speaking test
  6. 1. Linux内核的配置与裁减:
  7. 阿里云CentOS 7.4 配置Nginx、PHP、Mariadb
  8. JVM类加载(2)—连接
  9. 【高效JDBC编程工具JadePool快速入门】
  10. 25美元 Linux PC 'Raspberry Pi' 一月上市