‘壹’ 程序编译总要很长时间,怎么提高效率
采用模块化开发, 不开发的就不引用, 这样可大大加快编译速度.
我们项目目前约70W行代码, 纯AS, 但开发各司其职, 最后统一builder
‘贰’ 为什么Visual Studio 2010的编译速度比Visual Studio 6.0慢很多,有什么方法可以加快速度吗
编译器不同,使用的编译方法不同,主要差异在代码优化,智能纠错等方面。6.0是上世纪的产物,连C++标准都实现的非常不完善,更何况代码优化之类的特别费时的工作。随着CPU和操作系统技术的发展,二进制代码生成更加困难,优化更加复杂,当然最终代码的执行效率会更高。
另一方面也是由于nt内核的代码复杂度变的更高,vs2010的头文件和6.0的版本是不同的,很多新的的系统特性都被加入到windows头文件中。
加快速度的方法有禁用优化选项,禁用clr检查等。最基本的还是良好的程序结构,能减少编译器的工作量。vs在生成代码的时候即使是release模式仍然会创建大量的调试信息在工程中,以帮助问题发现和恢复,在vc6时代是没有这东西的。
‘叁’ c语言的编译效率是最快的吗
计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高,但也不能一概而论,部分解释型语言的解释器通过在运行时动态优化代码,甚至能够使解释型语言的性能超过编译型语言。解释则不同,解释性语言的程序不需要编译,省了道工序,解释性语言在运行程序的时候才翻译,比如解释性basic语言,专门有一个解释器能够直接执行basic程序,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。解释是一句一句的翻译。编译型与解释型,两者各有利弊。前者由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用它,像C/C++、Pascal/Object Pascal(Delphi)等都是编译语言,而一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言,如Java、JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。但随着硬件的升级和设计思想的变革,编译型和解释型语言越来越笼统,主要体现在一些新兴的高级语言上,而解释型语言的自身特点也使得编译器厂商愿意花费更多成本来优化解释器,解释型语言性能超过编译型语言也是必然的。
‘肆’ 编程语言越高级,程序的编译效率越低,是真的吗
额,编程语言高级人使用的更方便,但是在编译的时候就更复杂,所以效率会下降。但是高质量高效率的软件是由高级语言编写的,因为程序编译成功后不需要再编译了。高级语言写的软件一样可以拥有非常高的效率。如果用汇编写一个大型程序,不仅编程复杂,而且很多功能无法实现。
‘伍’ 1. 单选题下列选项中,哪一个不能通过编译( )。Abyte a
第2行确实会出错,原因有两个:1:protectied 不是关键字,正确的应该是protected2:toString( )i ,方法的括号后面不能出现无意义的字符串
‘陆’ 影响vs编译速度的因素有哪些
影响因素比较多:
1 文件的大小,文件大小指的是全部include展开后的大小。
2 文件数量,编译是一个一个文件进行的,所以你的工程的文件数量也有关系。
3 还有声明的复杂程度,复杂声明需要额外地计算。
4 最影响编译速度的估计是C++的模板,模板在编译的时候要进行推导,得到相应的结果,这个非常费时间。如果你是模板里还套了模板,那就比较慢了。
5 链接库的数量,链接很多库也会使得编译速度变慢。
6 inline函数展开,会使得代码膨胀,也会影响编译速度
7 debug模式编译要留符号表做调试,也会影响速度
8 release模式如果开了优化,编译优化会改变代码的某些结构,这也是拖慢编译器的一个重要因素。
‘柒’ 什么是提高程序效率的最好方法
选择好的算法, 小心地实现, 同时确定程序不做额外的事。例如, 即使世界上最优化的字符复制循环也比不上不用复制。
当担心效率时, 要保持几样事情在视野中, 这很重要。首先, 虽然效率是个非常流行的话题, 它并不总是象人们想的那样重要。大多数程序的大多数代码并不是时间紧要的。当代码不是时间紧要时, 通常把代码写得清楚和可移植比达到最大效率更重要。记住, 电脑运行得非常非常快, 那些看起来 “低效率” 的代码, 也许可以编译得比较有效率, 而运行起来也没有明显的延时。
试图预知程序的 “热点” 是个非常困难的事。当要关心效率时, 使用 profiling软件来确定程序中需要得到关注的地方。通常, 实际计算时间都被外围任务占用了 (例如 I/O 或内存的分配), 可以通过使用缓冲和超高速缓存来提高速度。
即使对于时间紧要的代码, 最无效的优化技巧是忙乱于代码细节。许多常被建议的 “有效的代码技巧”, 即使是很简单的编译器也会自动完成 (例如, 用移位运算符代替二的幂次方乘)。非常多的手动优化有可能是代码变得笨重而使效率反而低下了, 同时几乎不可移植。例如, 也许可以在某台机器上提了速, 但在另一台机器上去变慢了。任何情况下, 修整代码通常最多得到线性信能提高; 更好的算法可以得到更好的回报。
‘捌’ 编译原理判断题
1. B 正确
2. A 错误,不一定存在
3. B 正确
4. B 正确
5. A 错误,是后缀式
6. A 错误,只是算符文法,不一定是算符优先文法
7. B 正确
8. B 正确
9. A 错误,语义动作是附加在产生式上的,不是附加在非终结符上
10. A 错误,有些文法不能改写为LL(1)文法
11. B 正确
12. B 正确
13. B 正确
14. B 正确
15. A 错误,SLR(1),LR(1)等都是冲突解决的办法
16. B 正确
17. B 正确
18. A 错误,不是编译程序工作效率高,而是生成的目标程序运行效率高
19. B 正确
‘玖’ 什么工具可以提升gcc编译效率
这个一般的工具应该还是做不到的,但是工具栏上应该还是有制动编译的功效,你看一看。
‘拾’ 在编译原理中,代码优化功能模块可以产生效率较高的目标代码,不能使编译工作本身速度加快。
就是提高运行效率的 比如 值编号冗余消除
t1 = a + b;
t2 = a + b;
值编号后(假设a + b编号为e1)发现赋值表达式的右操作数一样 ,则
可以优化成 t1 = a + b; t2 = t1;
再如窥孔优化:如发现a = a+ 1;这样的表达式 则可以优化成a++;后者自增运算的机器周期要低于前者加法运算的 就是这些了。。。