㈠ 含有代码优化的编译器的执行效率高这句话对不对
优化方式理论上跟编译器和硬件都有关联。代码级别的优化,要看所使用的编译器实现,Xcode用的是clang,VS用的是windows自己的编译器。。。
汇编级别(指令级别)的优化,要根据硬件对应的指令集实现,指令集根据CPU类型的不同而不同。。。
㈡ Intel C++ Compiler与gcc对比有什么优缺点
icc 是Intel公司专门为Wintel平台设计,有针对性的做了优化,缺陷也很显然,既然有针对性,也就不具备通用性。使用icc编译,可能会使编译出来的程序有更好的执行效率,但也可能使其在非Intel CPU上运行异常。并且,在某些情况下,即使在Wintel平台上也会崩溃。
gcc的优势在于其通用性,目前主流的所有平台,它基本上都支持。使用-O3优化编译后的执行效率,也不错。
在Win平台上,编译后执行效率最好的,依然是微软的vs,这可能与win系统是他们家出的有关。
使用icc带来的优势,并不突出,还是建议不要用了。
如果限定在win平台上开发,使用vc或gcc更合适一些。我个人推荐gcc,vc的ide环境过于庞大,不太喜欢,但win平台上主流的c开发工具还是vc,有不少开源的工程都使用它,如果你用到了这些开源代码,就不得不用了。
㈢ 编译型语言和解释型语言各自的优缺点是什么
一、编译型语言
优点:运行速度快,代码效率高,编译后的程序不可修改,保密性较好。
缺点:代码需要经过编译方可运行,可移植性差,只能在兼容的操作系统上运行 。
二、解释型语言
优点:可移植性较好,只要有解释环境,可在不同的操作系统上运行。
缺点:运行需要解释环境,运行起来比编译的要慢,占用资源也要多一些,代码效率低,代码修改后就可运行,不需要编译过程。
(3)含有代码的编译器效率高扩展阅读:
编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成 为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++、Delphi等。而相对的,解释性语言编写的程序不进行预先编译,以文本方式存储程序代码。在发布程序时,看起来省了道编译工序。但是在运行程序的时候,解释性语言必须先解释再运行。
㈣ 关于汇编和c语言效率哪个高
这个不一定,取决于编程人员的水平,
实现相同功能:
一般来说,如果牛人来写汇编和C语言,肯定汇编性能高。
但如果一般开发人员写汇编和C语言,就不一定了,
因为现代编译器有大量的优化手段(超牛人写的,比如寄存器优化,乱序优化,字节对齐优化等等,很多优化技术一般开发人员是不了解的),这些优化手段最终得到的效果,可能比一般人直接用汇编写的性能更高。
㈤ c语言效率问题
汇编语言的效率确实比C语言高,但汇编语言调试过程较为困难,代码容易遗留缺陷,而且难以维护。其实编译器已经把你这个想法干掉了,C编译器会把C代码转换成汇编代码,再翻译成机器指令。如果想获得较高的效率,可在编译前,将编译器的优化选项打开,如此即可获得较高效率的代码。如果这样得到的代码还是不能满足要求,那么合适的做法是识别程序中对效率要求最高的一小部分,将这小部分代码用汇编实现,并将代码嵌入到C程序中。
㈥ 推荐几个C++的编译器
visual c++ 功能强大,不过需要的容量也很大 ,
TC2.0也不错 很适合初学者 不过不是很标准 下面有它们的下载网站 你自己根据自己的情况,自己选择吧,我的建议是VC6.0
TC2.0的:
http://218.64.170.103/dload1.html?cid=
http://218.64.170.103/dload1.html?cid=
VC6.0 的:
http://218.64.170.103/dload1.html?cid=
http://218.64.170.103/dload1.html?cid=
㈦ 同样需要编译器为什么汇编语言比较快
绝大多数情况下,并不是。
事实上除了对CPU工作模式极端熟悉的人,一般人是很难用汇编写出更高效的代码的。
编译器虽然智商比不了人,但是它更精通优化。生成高效的代码需要透彻地掌握硬件的工作模式,每个细节都要考虑清楚。而且这很大程度上是软件更擅长但人并不擅长的繁重无脑又要求极高精确性的机械化工作。
当然专业搞优化的人还是能打败编译器的,因为编译器能做到的人终究还是可以做到。而人要比编译器聪明得多。编译器只能遵循一些规定好的模式进行优化,人可以创造编译器根本不知道的优化方法。某些逻辑靠编译器是没办法生成出来的,只能由人直接用汇编写。汇编语言虽然也要编译,但是一般会和机器指令直接对应,相当于要求CPU在细节上严格按人的思路工作,而高级语言并不能控制太多细节。
㈧ 含优化部分的编译程序执行效率高 对吗
不能说一定高,优化一个最主要目的是解决程序占用存储空间大。
㈨ 如何编写代码才能使效率提高
一、排版:
1.关键词和操作符之间加适当的空格。
2.相对独立的程序块与块之间加空行
3.较长的语句、表达式等要分成多行书写。
4.划分出的新行要进行适应的缩进,使排版整齐,语句可读。
5.长表达式要在低优先级操作符处划分新行,操作符放在新行之首。
6.循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分。
7.若函数或过程中的参数较长,则要进行适当的划分。
8.不允许把多个短语句写在一行中,即一行只写一条语句。
9.函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格。
10.C/C++语言是用大括号‘{’和‘}’界定一段程序块的,编写程序块时‘{’和
‘}’应各独占一行并且位于同一列,同时与引用它们的语句左对齐。在函数体
的开始、类的定义、结构的定义、枚举的定义以及if、for、do、while、
switch、case语句中的程序都要采用如上的缩进方式。
二、注释
1.注释要简单明了。
2.边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。
3.在必要的地方注释,注释量要适中。注释的内容要清楚、明了,含义准确,防止
注释二义性。保持注释与其描述的代码相邻,即注释的就近原则。
4.对代码的注释应放在其上方相邻位置,不可放在下面。
5.对数据结构的注释应放在其上方相邻位置,不可放在下面;对结构中的每个域
的注释应放在此域的右方;同一结构中不同域的注释要对齐。
6.变量、常量的注释应放在其上方相邻位置或右方。
7.全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取它
以及存取时注意事项等的说明。
8.在每个源文件的头部要有必要的注释信息,包括:文件名;版本号;作者;生成
日期;模块功能描述(如功能、主要算法、内部各部分之间的关系、该文件与其
它文件关系等);主要函数或过程清单及本文件历史修改记录等。
9.在每个函数或过程的前面要有必要的注释信息,包括:函数或过程名称;功能描
述;输入、输出及返回值说明;调用关系及被调用关系说明等。
三、命名
1.较短的单词可通过去掉“元音”形成缩写;
2.较长的单词可取单词的头几发符的优先级,并用括号明确表达式的操作顺序,避
免使用默认优先级。
3.使用匈牙利表示法
四、可读性
1.避免使用不易理解的数字,用有意义的标识来替代。
2.不要使用难懂的技巧性很高的语句。
3.源程序中关系较为紧密的代码应尽可能相邻。
五、变量
1.去掉没必要的公共变量。
2.构造仅有一个模块或函数可以修改、创建,而其余有关模块或函数只访问的公共
变量,防止多个不同模块或函数都可以修改、创建同一公共变量的现象。
3.仔细定义并明确公共变量的含义、作用、取值范围及公共变量间的关系。
4.明确公共变量与操作此公共变量的函数或过程的关系,如访问、修改及创建等。
5.当向公共变量传递数据时,要十分小心,防止赋与不合理的值或越界等现象发生。
6.防止局部变量与公共变量同名。
7.仔细设计结构中元素的布局与排列顺序,使结构容易理解、节省占用空间,并减
少引起误用现象。
8.结构的设计要尽量考虑向前兼容和以后的版本升级,并为某些未来可能的应用保
留余地(如预留一些空间等)。
9.留心具体语言及编译器处理不同数据类型的原则及有关细节。
10.严禁使用未经初始化的变量。声明变量的同时对变量进行初始化。
11.编程时,要注意数据类型的强制转换。
六、函数、过程
1.函数的规模尽量限制在200行以内。
2.一个函数最好仅完成一件功能。
3.为简单功能编写函数。
4.函数的功能应该是可以预测的,也就是只要输入数据相同就应产生同样的输出。
5.尽量不要编写依赖于其他函数内部实现的函数。
6.避免设计多参数函数,不使用的参数从接口中去掉。
7.用注释详细说明每个参数的作用、取值范围及参数间的关系。
8.检查函数所有参数输入的有效性。
9.检查函数所有非参数输入的有效性,如数据文件、公共变量等。
10.函数名应准确描述函数的功能。
11.避免使用无意义或含义不清的动词为函数命名
12.函数的返回值要清楚、明了,让使用者不容易忽视错误情况。
13/明确函数功能,精确(而不是近似)地实现函数设计。
14.减少函数本身或函数间的递归调用。
15.编写可重入函数时,若使用全局变量,则应通过关中断、信号量(即P、V操作)
等手段对其加以保护。
七、可测性
1.在编写代码之前,应预先设计好程序调试与测试的方法和手段,并设计好各种调
测开关及相应测试代码如打印函数等。
2.在进行集成测试/系统联调之前,要构造好测试环境、测试项目及测试用例,同时
仔细分析并优化测试用例,以提高测试效率。
八、程序效率
1.编程时要经常注意代码的效率。
2.在保证软件系统的正确性、稳定性、可读性及可测性的前提下,提高代码效率。
3.不能一味地追求代码效率,而对软件的正确性、稳定性、可读性及可测性造成影
响。
4.编程时,要随时留心代码效率;优化代码时,要考虑周全。
5.要仔细地构造或直接用汇编编写调用频繁或性能要求极高的函数。
6.通过对系统数据结构划分与组织的改进,以及对程序算法的优化来提高空间效率。
7.在多重循环中,应将最忙的循环放在最内层。
8.尽量减少循环嵌套层次。
9.避免循环体内含判断语句,应将循环语句置于判断语句的代码块之中。
10.尽量用乘法或其它方法代替除法,特别是浮点运算中的除法。
九、质量保证
1.在软件设计过程中构筑软件质量。
代码质量保证优先原则
(1)正确性,指程序要实现设计要求的功能。
(2)稳定性、安全性,指程序稳定、可靠、安全。
(3)可测试性,指程序要具有良好的可测试性。
(4)规范/可读性,指程序书写风格、命名规则等要符合规范。
(5)全局效率,指软件系统的整体效率。
(6)局部效率,指某个模块/子模块/函数的本身效率。
(7)个人表达方式/个人方便性,指个人编程习惯。
2.只引用属于自己的存贮空间。
3.防止引用已经释放的内存空间。
4.过程/函数中分配的内存,在过程/函数退出之前要释放。
5.过程/函数中申请的(为打开文件而使用的)文件句柄,在过程/函数退出前要关闭。
6.防止内存操作越界。
7.时刻注意表达式是否会上溢、下溢。
8.认真处理程序所能遇到的各种出错情况。
9.系统运行之初,要初始化有关变量及运行环境,防止未经初始化的变量被引用。
10.系统运行之初,要对加载到系统中的数据进行一致性检查。
11.严禁随意更改其它模块或系统的有关设置和配置。
12.不能随意改变与其它模块的接口。
13.充分了解系统的接口之后,再使用系统提供的功能。
14.要时刻注意易混淆的操作符。当编完程序后,应从头至尾检查一遍这些操作符。
15.不使用与硬件或操作系统关系很大的语句,而使用建议的标准语句。
16.建议:使用第三方提供的软件开发工具包或控件时,要注意以下几点:
(1)充分了解应用接口、使用环境及使用时注意事项。
(2)不能过分相信其正确性。
(3)除非必要,不要使用不熟悉的第三方工具包与控件。
十、代码编译
1.编写代码时要注意随时保存,并定期备份,防止由于断电、硬盘损坏等原因造成
代码丢失。
2.同一项目组内,最好使用相同的编辑器,并使用相同的设置选项。
3.合理地设计软件系统目录,方便开发人员使用。
4.打开编译器的所有告警开关对程序进行编译。
5.在同一项目组或产品组中,要统一编译开关选项。
6.使用工具软件(如Visual SourceSafe)对代码版本进行维护。
十一、代码测试、维护
1.单元测试要求至少达到语句覆盖。
2.单元测试开始要跟踪每一条语句,并观察数据流及变量的变化。
3.清理、整理或优化后的代码要经过审查及测试。
4.代码版本升级要经过严格测试。
㈩ 高级语言和汇编语言最后都转化为机器指令,那么为什么说汇编代码运行效率高
楼上的那段汇编如果去掉栈段将会更短些^^我也说两句吧,概括型~~
高级语言必须在操作系统环境下编译运行,通常会调用操作系统提供的库,比如WINDOWS环境下通常会调用GDI,而汇编代码是机器指令的助记符,机器指令可不需要操作系统环境直接基于硬件运行,,想想硬盘的0磁头0柱面1扇区的主引导记录吧~~ 还有一点就是人是非常智能的,用汇编编程时会根据数据大小分配合适的存储单位,合理利用内存空间,而用高级语言编程,以VISUAL BASIC为例,不必考虑数据是一个字节或是一个字或是一个双字,编译器编译有时统一以双字为单位分配,就大大的浪费了内存空间,而且用汇编编程常求精简,而高级语言编译器由于没有人类智能,对于同样一个目标可能会绕些弯子~这样一来,同样功能的程序用高级语言编译生成的要比直接用汇编生成的要长多啦,有时甚至几倍!所以说汇编代码效率要高。
但是现在之所以高级语言非常通用,是因为大型的程序如果用汇编去实现是非常庞大的工程,而调用已总结的库文件则轻松的多,C语言编译器就提供了相当大的库函数方便编程者调用,就好像别人已经为你烧制好砖头,你只要盖房子就好。