关于VC++、VC++.net和VC#的运行效率与开发效率

问题描述

我从刚开始学了VC++后没有学mfc,接着自学了C#做了不少的东西,对.net也算是有点了解了。不过我总感觉用.net的程序效率不如C++的高,于是现在又回头来学mfc,才发现.net的框架做界面是多么的方便,实在不是mfc能比的,但又希望能做出高效的程序,比如运行计算量比较大的算法。在学习别人的代码,以及看到现在的程序,又有不少用VC++.net编的,不知道它是否有原来VC++那样的运行效率,而编界面方面是否比较方便。对于C#,我也不知道有什么方法能比较明显的提高运行效率。希望各位朋友能交流下经验,听听各位的看法,谢谢~

解决方案

解决方案二:
C#程序效率真的比C++低么?这似乎本身就是伪命题。托管程序在运行效率方面至少有这么几个优势:JIT编译器可以产生比C++编译器更好的本地代码,因为C++编译器编译的代码必须满足所有处理器运行的需要,而JIT可以针对运行程序的那一台计算机产生最优的代码。CLR可以智能地处理模块,在C++中程序经过静态连接,在运行的时候一次加载,而CLR可以实现按需加载,并且自动内联函数。.NET程序员可以获得更好的函数库支持,这些函数精心编写,效率很高。在C++中,程序员手工选择的算法往往不是最优的。.NET程序可以方便地为多处理器、并行、分布式环境优化,在高性能计算中,程序的伸缩性比性能更重要,这是因为同样获得两倍的运算性能,使用双CPU或者双计算机的成本要低于一台两倍速度的处理器。.NET程序更加简洁,简洁的代码意味着更高的效率和更小的存储器需求。最后,C++程序的一些“高效”是以程序根本错误为代价的,比如不正确地分配内存,没有检查下标,没有检查缓冲区,没有做线程同步,这些看似高效的代码本身是不稳定的不安全的和存在问题的,根本没有可比性。
解决方案三:
我想很多人都在说,汇编程序的效率比C++高。也许这是事实,但是我想一个汇编菜鸟现在想用汇编编写比C++更快的代码似乎已经不可能了。现代的C++编译器充分优化,现代的处理器多层缓存系统、各种指令集、寄存器重名、乱序、多发射,这些特性使得代码优化变成非常复杂的问题,菜鸟根本无法和精心设计的编译器相比。类似的,C++菜鸟真的能写出比C#程序更快的程序么?我想答案是否定的。所以所谓C++效率高只是一个遥远的传说。
解决方案四:
我觉得,站在菜鸟的角度,是没有必要谈哪个语言或者哪个开发环境效率更高的,因为你还没有精力考虑到这一步,系统0.01秒的执行时间的区别和系统运行稳定性比较起来,后者才是菜鸟该花精力考虑的,正如楼上所说,一个汇编菜鸟现在想用汇编编写比C++更快的代码似乎已经不可能了.注:本人是纯菜鸟.
解决方案五:
感谢二楼的回答,但不管程序员之间水平的差距,同样的算法,C#也可以做到和C++一样的运算速度吗,最最简单的比如:两个int相加。在运算量大的时候,比如做滤波算法什么的,我还是感觉两者有差距,有人说C#需要拆箱和封箱什么的,不知道C#在运行时是否会做一些其余的操作。在做大量运算的时候,用C#真的合适吗?
解决方案六:
引用4楼的回复:

感谢二楼的回答,但不管程序员之间水平的差距,同样的算法,C#也可以做到和C++一样的运算速度吗,最最简单的比如:两个int相加。在运算量大的时候,比如做滤波算法什么的,我还是感觉两者有差距,有人说C#需要拆箱和封箱什么的,不知道C#在运行时是否会做一些其余的操作。在做大量运算的时候,用C#真的合适吗?

单纯的运算来说,C#是不落下风的。至于复杂情况可就不好说了。

时间: 2024-12-30 15:49:08

关于VC++、VC++.net和VC#的运行效率与开发效率的相关文章

成也VC,败也VC?

摘要: 一场智联招聘的人事地震,再度让网络招聘行业深埋的问题浮出水面. 10年时间,对网络招聘行业来说注定是场互联网的悲剧.在经历过资本涌入.广告大战.价格竞争等招数的轮番轰 一场智联招聘的人事地震,再度让网络招聘行业深埋的问题浮出水面. 10年时间,对网络招聘行业来说注定是场互联网的悲剧.在经历过资本涌入.广告大战.价格竞争等招数的轮番轰炸下,虽然让前程无忧.智联招聘.中华英才网抢到了行业前三的宝座,但此举并没有为它们迎来高速成长的机会,相反却把自己推入另一种尴尬的境地. 盈利模式相同,盈利途

vc 如何创建服务-VC 开机自动启动。不用写注册表的方法。想写一个服务来启动这个程序。

问题描述 VC 开机自动启动.不用写注册表的方法.想写一个服务来启动这个程序. 有个EXE程序想要它开机自动启动.我不想用写注册表的方法启动.看能不能够写一个服务来启动这个程序.如果可以麻烦大家能够提供源码.谢谢!!!!! 解决方案 创建服务,CreateService()

vc++-请问,如果VC++6成功调用动态链接库了,那么Qt是不是也可以成功调用库?

问题描述 请问,如果VC++6成功调用动态链接库了,那么Qt是不是也可以成功调用库? 请问,如果VC++6成功调用动态链接库了,那么Qt是不是也可以成功调用库? 解决方案 VC6 工作在是windows ,QT是跨平台的, 对于同一个库文件,VC能成功调用,那么Windows平台上的QT也应该有对应的方法能成功调用,但是换换平台应该就不行了 解决方案二: 要看是什么连接库啊,看是不是Win32平台的,看是不是对质VC6编译器的,如果是就可以了.在编译器编译命令中添加库引用就可以了. 解决方案三:

vc非模态对话框-VC 非模态对话框为何总是置顶显示

问题描述 VC 非模态对话框为何总是置顶显示 小弟遇到一个问题,不知道谁能帮忙解决一下,先谢谢啦~ 我的单文档程序,点击按钮后生成一个非模态对话框,可是对话框一直是显示在前端,当我鼠标点在单文档程序上进行操作时,对话框一直挡在前面,这点让我不能理解啊,因为活动窗口是主窗口了啊,怎么让主窗口可以显示在对话框之上呢??不知道哪位大神能指点一下的 解决方案 你可以手动让他不在最顶端,判断是否获得焦点,如果没有,最小化一下就可以了

vc socket木马-用VC编写socket木马的问题

问题描述 用VC编写socket木马的问题 下面的是某一本书上我看到的代码 服务器端代码如下: // easyDoor.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include #include #include #pragma comment (lib, "Winmm") #pragma comment (lib, "ws2_32&

vc++-急求用VC++2005文件写的学生管理系统,不用MFC界面,DOS就可以

问题描述 急求用VC++2005文件写的学生管理系统,不用MFC界面,DOS就可以 大致三个模块,模块功能如下 第一块:登录模块及权限设置模块 (1)管理员/学生登录模块:设置/修改密码:不同类型人员的权限设置(管理员可以修改信息,学生只能查询信息) 第二块:管理员模块 (2)面向管理员的学生信息管理模块:加入学生信息:根据各种特征方便的查找学生信息:学生信息的管理: (3)面向管理员的课程及成绩管理模块:各学年所修课程及其成绩管理. 第三块:学生模块 (4)面向学生的学生信息查询模块:根据各种

vc++编程问题-关于VC中ListBox问题,需要帮助

问题描述 关于VC中ListBox问题,需要帮助 我在文件中读取了一些字符串到ListBox中,如:A,B,C,现在我在此读取另一个文件的内容,如果文件中存在A,B,C了就不输出到ListBox中了!!!!有什么方法直接调用么!!! 解决方案 写一个函数BOOL Insert(CString inputCListBox *plb){int i;i=plb->FindString(0input);//检查一下这个返回值,然后就知道有没有了if(i>=0){plb->InsertString

vc++编程问题-关于VC调用API如何打印字符串

问题描述 关于VC调用API如何打印字符串 最近在写一个记事本的程序,我想实现它的打印功能,跟windows下的记事本一样,不知道是如何实现的呢? 解决方案 http://wenku.baidu.com/link?url=xu3hMtICSp0Wb8KxhINuLYwLrE_8yBY67d3hB3webdH3-57zXkkIGtXW_xtAnUPh_ekRci5vwc3oDgfDk-Q-84HDdYudjq4ZYMJaAO4rMEW 关键点在于像往屏幕输出那样调用TextOut 如果超出一张纸,

vc++ 设备上下文-关于VC++中dc设备上下文的理解,文本编程

问题描述 关于VC++中dc设备上下文的理解,文本编程 在孙鑫老师的VC++视频教程中学习文本编程看到下面的代码: if (0x08 == nChar) { COLORREF clr = dc.SetTextColor (dc.GetBkColor ()); dc.TextOut (m_ptOrigin.x ,m_ptOrigin.y ,m_strLine); m_strLine = m_strLine.Left (m_strLine.GetLength ()-1); dc.SetTextCol