精华内容
下载资源
问答
  • 编译器优化

    2011-09-15 19:32:25
    编译器优化 ...一直想给大家介绍一些编译器优化方面的知识,只是又觉得这方面知识内容太多了,介绍起来太花费时间了,实在没有精力去逐一介绍,并且很多编译器方面术语我都不知道中文该如何翻译(国内

    转自:http://bbs.emath.ac.cn/thread-173-1-1.html

    编译器优化

    一直想给大家介绍一些编译器优化方面的知,只是又觉得这方面知识内容太多了,介绍起来太花费时间了,实在没有精力去逐一介绍,并且很多编译器方面术语我都不知道中文该如何翻译(国内相关资料应该也比较少,很有可能有些术语都没有标准的翻译),所以一直非常犹豫要不要讨论这方面的内容,所以就先随便试一试看吧,等每次有空有兴趣时就可以试着随便写一点。
      我觉得大概懂得编译器到底可以做一些什么优化工作,对于写出高效率的程序是非常重要的。只有知道编译器大概会怎么去做,我们才能够知道用怎么样的代码会提供给编译器更多的优化机会,怎样的代码不会阻碍编译器的优化,甚至于,在知道编译器无能为力的情况下,可以通过手工模拟一些编译器的变化过程对代码做优化。
    而我讨论的重点将在于通常编译器会做那些平台无关的优化。至于文法分析,代码生成之类的内容,我不会去介绍(其实我也不熟悉)。
      先大概介绍一下编译器。通常编译器可以分成前端(FrontEnd/FE)和后端(BackEnd/BE)两个部分,其中前端负责将用户的源代码翻译成一种编译器的内部表示(Intermedium Representation/IR),我们简称IR. 这个就是通常词法分析,语法分析所做的事情。对于不同的源代码语言,我们需要不同的前端,但是我们可以通过使用公共的IR,使得对于不同的语言,可以使用相同编译器的后端。而编译器的后端,现在通常分成两个部分,一部分负责同平台无关的优化工作,我们通常称为中间端(MiddleEnd/ME),另外部分负责同平台相同的优化工作和代码生成(通常指生成汇编语言或直接二进制机器代码),我们通常称为代码生成部分(Code Generation/CG).
      同样,对于不同的平台(不同的CPU,不同的操作系统),我们需要不同的代码生成部分,但是整个编译器的中间端可以在不同的源代码,不同的平台之间共享。
    有一点需要注意的是,这里说的不同语言,是指像C/C++/Fortran/Pascal之类的静态编译的语言,而不包含像Java/C#之类需要在运行时间再编译的语言(这是因为这两种编译器的实现方法完全不同),而对于Java/C#之类的语言,所用的编译器就是另外一个话题了,不过其中用到的大部分技术还是类似的。
    而我将会把介绍的重点放在编译器的中间端(ME).

      关于介绍编译器优化的书,我推荐大家可以看一下美国的Steven S. Muchnick写的Advanced Compiler Design and Implementation. 国内有影印版,中文名字叫《高级编译器设计和实现》。但是有没有翻译成中文的版本我就不知道了。
      而现成的比较好的编译器源代码,我推荐open64,这个可以在http://www.open64.net/上找到,这个编译器的前身是sgi的编译器pro64,后来移植到Itanium芯片上。根据open64网站上的信息,现在可以用于Itanium (IA64), i386 (32位x86通用芯片)和X86_64(64位x86通用芯片)。不过好像只支持Linux (Windows可以试着安装一下cygwin看看).对于语言,它可以同时编译C/C++/Fortran. 在我印象中,这个编译器的前端用的是gcc的前端,也就是说必须安装了gcc才能够使用open64,但是据说编译出来代码的性能比gcc要好很多。

    本文转自:[url=http://bbs.emath.ac.cn/thread-173-1-1.html]数学研发论坛(bbs.emath.ac.cn)[/url]

     

    展开全文
  • 网上搜集到一位版主关于编译器优化的文章,写得相当不错 拿过来赚点分数用用
  • C++编译器优化

    2019-02-18 18:33:12
    C++编译器优化C++编译器优化C++编译器优化C++编译器优化C++编译器优化C++编译器优化C++编译器优化C++编译器优化
        

    C++编译器优化C++编译器优化C++编译器优化C++编译器优化C++编译器优化C++编译器优化C++编译器优化C++编译器优化

    展开全文
  • 主要介绍了C#中尾递归的使用、优化及编译器优化,本文讲解了递归运用、尾递归优化、编译器优化等内容,需要的朋友可以参考下
  • CCS编译器优化

    千次阅读 2018-10-16 09:17:02
    t 每个文件都可以设置编译器优化,右键.c文件->属性->optimization->optimization level 设置成空的,即可在debug的时候避免出现异常。开编译器优化可能导致跟踪函数的变量时值是错的。编译...

    t 每个文件都可以设置编译器优化,右键.c文件->属性->optimization->optimization level 设置成空的,即可在debug的时候避免出现异常。开编译器优化可能导致跟踪函数的变量时值是错的。编译优化的好处是加快代码运行速度,但缺点就是只能把函数当做黑盒,函数内部的bebug结果是不可靠的。所以一般将算法和流程编到不同的文件中去,因为算法文件一般都是验证完了的,不怎么需要调试,所以算法文件开适当的优化,流程文件不开优化。这样既能提高运行效率又可以不影响流程的调试

    展开全文
  • 编译器优化问题

    2019-08-29 16:15:49
    首先来分析一段代码: char *a = "hello"; char *b = "hello"; if(a == b) ...如果编译器优化的话,会有可能a和b同时指向同一个hello的,这时地址相同;如果编译器没有优化,那么就是两个不同的地...

    首先来分析一段代码:

    char *a = "hello";
    char *b = "hello";
    if(a == b)
        printf("YES");
    else
        printf("NO");

    "hello"是一个常量字符串,位于静态存储区,它在程序生命期内恒定不变。如果编译器优化的话,会有可能a和b同时指向同一个hello的,这时地址相同;如果编译器没有优化,那么就是两个不同的地址。

    展开全文
  • 编译器优化,运行时优化

    千次阅读 2018-04-16 02:05:48
    虚拟机设计团队把对性能的优化集中到了后端的即时编译器中,这个可以让那些不是由javac产生的class文件有(比如其他语言编译的class文件)也享受到编译器优化带来的好处。 但是javac做了许多针对java语言编码过程的...
  • 编译器优化:1.由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,...
  • 编译器优化 volatile

    2015-03-07 17:22:15
    1、编译器优化介绍  内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行...
  • java编译器优化

    2018-05-28 00:08:04
    java编译器优化1.把java文件转变成呢过class文件的过程2.javac编译器的过程: 1.解析与填充符号表过程 2.插入式注解处理器的注解处理过程 3.分析与字节码生成过程 解析与填充符号表: 1.词法,语法分析:词法分析...
  • 老外写的关于编译器优化的文章,有利于程序的逆向
  • 编译器优化技术

    千次阅读 2014-01-06 15:19:35
    存在多种编译器优化技术来间接影响缓存的使用模式。下面仅举几例,且均假定编译器采用行主序(Row-major order)存储数组: 1. 循环交换(Loop Interchange) 考虑一个对二维数组a[100][5000]的循环处理 a...
  • windriver公司diab编译器优化技术大全,必备经典
  • 1.内存管理2. 编译器优化问题
  • 即时编译器优化技术一览 1.编译器策略(compiler tactics) 延迟编译(delayed compilation) 分层编译(tiered compilation) 栈上替换(on-stack replacement) 延迟优化(delayed reoptimization) 静态单赋值表示...
  • 123 //编译器优化 456 123 //编译器优化 后面2个123是因为编译器加了优化,看到是const和constexpr就直接把结果输出为123了。 采用g++ -O0 const1.cpp 关掉编译器优化,效果还是一样。可能有些平台上可以。 #include...
  • 可以使用命令g++ xxx.cpp -fno-elide-constructors命令关闭编译器优化。 例如下面代码的执行结果: #include <iostream> using namespace std; class Point { public: Point(int xx = 0,...
  • 所有的代码转化为可执行文件...本文通过分析Go编译器优化的完整案例,向大家分享编译器的编译规则的优化方法。 摘自OptimizeLab:https://github.com/OptimizeLab/docs 作者:surechen 编译器的作用是将高级语言...
  • 你对Java编译器优化的概念和方法是否熟悉,这里和大家分享一下,Java应用程序的编译过程与静态编译语言(例如C或C++)不同。静态编译器直接把源代码转换成可以直接在目标平台上执行的机器代码,不同的硬件平台要求...
  • 编译器优化–1--概述简介 ​ 编译器接收输入源码,在输出目标程序之前,可以在代码的IR(Intermediate Representation)形式上进行多个Pass(有些文档上将Pass翻译为“趟”)迭代。多遍迭代可能会生成更好的代码,...
  • 由此可见(C语言volatile关键字详解),编译器优化会对自定义延时程序有影响,我们深入汇编程序去探讨产生怎样的影响! 首先是未加 volatie 使用和未使用编译器优化汇编程序的对比: 有以下这么一个源程序(delay...
  • 编译器:Intel C++编译器 测试环境: CentOS 【问题】 针对两个同样功能的程序,一个不使用SSE,一个使用SSE (intel intrinsics),结果当不适用编译器优化时,使用SSE时速度优于不适用SSE,而当编译器使用O2优化时...
  • 浅谈编译器优化

    千次阅读 2013-06-15 09:45:06
    1、编译器优化介绍   内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 283,313
精华内容 113,325
关键字:

编译器优化