http://hi.baidu.com/xiaole10368/item/7cea9b1369cc240db88a1a5c 少优化->多优化: O0 -->> O1 -->> O2 -->> O3 -O0表示没有优化,-O1为缺省值,-O3优化级别最高 英文解析: `-O ' `-O1 '                 Optimize.      Optimizing   compilation   takes   somewhat   more   time…
英文:https://gcc.gnu.org/onlinedocs/gcc-3.4.6/gcc/Optimize-Options.html#Optimize-Options 少优化->多优化: O0 -->> O1 -->> O2 -->> O3 -O0表示没有优化,-O1为缺省值,-O3优化级别最高 英文解析: `-O ' `-O1 '                 Optimize.      Optimizing   compilation   takes…
四种编译优化类型的解释: `-O ' `-O1 '                 Optimize.      Optimizing   compilation   takes   somewhat   more   time,   and   a                 lot   more   memory   for   a   large   function.                   With   `-O ',   the   compiler   tries  …
Object 对象方法学习之(1)—— 使用 Object.assign 复制对象.合并对象 合并对象 var o1 = {a: 1}; var o2 = {b: 2}; var o3 = {c: 3}; var obj = Object.assign(o1, o2, o3); console.log(obj); //{a: 1, b: 2, c: 3} console.log(o1); //{a: 1, b: 2, c: 3}, 目标对象被改变了 http://www.cnblogs.com/…
转自:http://blog.csdn.net/qinrenzhi/article/details/78334677 相关博客http://blog.chinaunix.net/uid-24954950-id-2956476.html 相关博客http://blog.csdn.net/misiter/article/details/7514428 相关博客http://blog.chinaunix.net/uid-23916171-id-2653114.html Gcc 编译优化简介 gcc 提…
参考链接 : http://blog.csdn.net/qq_31108501/article/details/51842166 gcc -D选项的作用,声明宏 参考链接:  http://blog.csdn.net/joeblackzqq/article/details/6785256 gcc  -w -W 的作用与区别 http://blog.csdn.net/m7548352/article/details/49520069…
我的博客:www.while0.com -fomit-frame-pointer选项是发布产品时经常会用到的优化选项,它可以优化汇编函数中用edp协助获取堆栈中函数参数的部分,不使用edp,而是通过计算,全部使用esp来完成.看下边的例子就明白了: 把一下文件保存为test.c int b(int c){ int d = c; return 0; } 通过一下命令编译: gcc -o test.s -S test.c   不优化,编译为test.s gcc -o test1.s -S -fomi…
1 -fno-defer-pop 函数返回的时候,就立即将栈里面放置的该函数的参数pop出来.这样可以避免函数参数占用过多的栈空间. 2 -fforward-propagate ? 3 -ffp-contract=style floating point expression contract,这个是FMA,fused multipy add 用于计算x*y + z,其中x.y.z都是浮点数.有的处理器实现了fma指令. c99里面通过提供fma函数来支持fma. fma的特点是可以使得这种模式…
转自:http://blog.csdn.net/princess9/article/details/6567678 一般来说要现有项目中的编译选项,设置新的project的编译选项 编译器 就是将“高级语言”翻译为“机器语言(低级语言)”的程序.一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 汇编程序 (assembler) → 目标代码 (object code) → 链接器 (Linker)…
我们知道在C语言编译时,有那么几个常用的优化编译选项,分别是-O0,-O1,-O2,-O3以及-Os.之前一直觉得既然是优化选项,顶多是优化一下逻辑,提高一些效率或者减少一下程序大小而已.很少会觉得它们会影响程序的最终结果.直到最近在ARM平台上发现一个程序里的一个bug,才觉得这些优化选项有时候也没那么智能.或者说针对ARM平台,还没有那么智能.      首先看这么一段程序,此程序是我将问题简单化的程序: #include<stdio.h> #include<string.h>…
-Wall  生成所有警告信息 -o test (小写字母o)是说输出为test -ansi  是使用c++98标准去编译代码. 关闭gnu c中与ansi c不兼容的特性,激活ansi c的专有特性(包括禁止一些asm inline typeof关键字,以及UNIX,vax等预处理宏) -O0   (大写字母O)-O1  -O2  -O3   编译器的优化选项的4个级别,-O0表示没有优化, -O1为缺省值,-O3优化级别最高    例子用法:     gcc -O1 test.c -o te…
参考gcc man page 参考:http://www.cppblog.com/seman/archive/2005/11/30/1440.html gcc and g++分别是gnu的c & c++编译器, gcc/g++在执行编译工作的时候,总共需要4步 1.预处理: 生成预处理文件,后缀名 .i [预处理器cpp] 2.编译: 预处理后的文件编译生成汇编语言文件,后缀名 .s [编译器egcs] 3.汇编: 汇编语言文件 汇编 生成目标代码(机器代码)文件,后缀名.o [汇编器as] 4…
g++优化选项 g++优化选项 对于下面的这段代码: 1 2 3 4 5 6 7 8 9 10 11 12 #include <iostream> using namespace std; int main() { const int n = 1e9; ; i < n; ++i) { //~ nothing } ; } 正常的编译命令: 1 $ g++ test.cpp -o test 用time测试运行时间: 1 time ./test 输出: real 0m4.431s user 0…
arm-linux-gcc的优化选项例如(-O2),可以加速我们的程序,使程序执行效率更高.但是,倘若我们就是需要程序慢一点运行,但是优化却把我们的延时函数优化的没有了的时候,这种优化却不是我们想要的.有时候,我们需要事物差的一面.下边的代码是我的main.c程序. ; dly--); } ;              GPBCON = GPB5_out|GPB6_out|GPB7_out|GPB8_out;  ){               wait();               GPB…
查查gcc手册就知道了,每个编译选项都控制着不同的优化选项 下面从网络上copy过来的,真要用到这些还是推荐查阅手册 -O设置一共有五种:-O0.-O1.-O2.-O3和-Os. 除了-O0以外,每一个-O设置都会多启用几个选项,请查阅gcc手册的优化选项章节,以便了解每个-O等级启用了哪些选项及它们有何作用. 让我们来逐一考察各个优化等级: -O0:这个等级(字母"O"后面跟个零)关闭所有优化选项,也是CFLAGS或CXXFLAGS中没有设置-O等级时的默认等级.这样就不会优化代码,…
gcc options选项的优化 -c和-o都是gcc编译器的可选参数[options] -c表示只编译(compile)源文件但不链接,会把.c或.cc的c源程序编译成目标文件,一般是.o文件.[只编译不链接]-o用于指定输出(out)文件名.不用-o的话,一般会在当前文件夹下生成默认的a.out文件作为可执行程序.[指定输出文件名] -g 可执行程序包含调试信息[调试] 例如gcc -c test.c     将生成test.o的目标文件 , 产生.o文件,就是obj文件,不产生执行文件 g…
#pragma GCC optimize(2)//O2优化 #pragma GCC optimize(3,"Ofast","inline")//O3优化…
1.简介: gcc是gnu旗舰产品,目前基本上就是和unix捆绑在一起分发的.这个东西功能强大,但是有多达上千个选项,其用户手册也有将近一万行.虽然其中的多数选项平时很少用到.但是不管装软件还是写程序,往往都会用到gcc.下面我就gcc最最常用的几个选项做一个简要的说明,如果你想对gcc有一个全面的了解,比如你想知道在其他非x86平台上gcc是如何工作的话,你可以用命令:man gcc; gcc     [-c|-S|-E] [-std=standard] [-g] [-pg] [-Olevel…
1.简介: gcc是gnu旗舰产品,目前基本上就是和unix捆绑在一起分发的.这个东西功能强大,但是有多达上千个选项,其用户手册也有将近一万行.虽然其中的多数选项平时很少用到.但是不管装软件还是写程序,往往都会用到gcc.下面我就gcc最最常用的几个选项做一个简要的说明,如果你想对gcc有一个全面的了解,比如你想知道在其他非x86平台上gcc是如何工作的话,你可以用命令:man gcc; gcc     [-c|-S|-E] [-std=standard] [-g] [-pg] [-Olevel…
转自:http://blog.csdn.net/zjujoe/article/details/2604157 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 关于浮点优化选项摘自C in a nutshell 测试 测试方法 marvell 编译器 -ffast-math 测试结果 Meamo 编译器 -ffast-math 测试结果 关于浮点优化选项:(摘自C in a nutshell) C99 浮点环境支持科学和数学级别的应用,这些应用必须有相当高的精度,但是某些应…
从App Store下载到的每一枚App最初都是一只IPA文件(其实是zip格式,内含特定规则的文件夹组织方式).但当作zip解开之后会发现里面很多的PNG文件看不了,这是因为在这些PNG图像都已被iOS开发工具「优化」过了. Bjango.com的一篇文章提到了不管开发者事先对PNG做了何种优化(例如优化色彩范围这种),最终得到的结果都是一样的文件尺寸-因为Xcode编译后把所有PNG都按自己的方式再处理了. 苹果究竟要对每个PNG做了什么?为啥呢. 苹果的提供的开发者文档以及各种会议/视频中…
2017-12-12 18:53:04 gcc优化引起get_free_page比__get_free_page返回值多4096 内核版本:1.3.100 extern inline unsigned long get_free_page(int priority){    unsigned long page;    page = __get_free_page(priority);    DDBUG("1.page=%p, nr=%d", page, page>>PAG…
原文链接 现在多核CPU是主流.利用多核技术,可以有效发挥硬件的能力,提升吞吐量,对于Java程序,可以实现并发垃圾收集.但是Java利用多核技术也带来了一些问题,主要是多线程共享内存引起了.目前内存和CPU之间的带宽是一个主要瓶颈,每个核可以独享一部分高速缓存,可以提高性能.JVM是利用操作系统的“轻量级进程”实现线程,所以线程每操作一次共享内存,都无法在高速缓存中命中,是一次开销较大的系统调用.所以区别于普通的优化,针对多核平台,需要进行一些特殊的优化. 代码优化 线程数要大于等于核数 如果…
学习和使用c这些年来,很多方面都未深入研究过,就如脱离了IDE后,我可能连编译一个c文件的命令都写不出来. 最近需要在c中内嵌汇编解决问题,参考网上相关的资料写了一段汇编代码,在测试的时候时好时坏,找了半天也没查到原因. 后来看到一篇提到 O2 编译选项,会自动优化指令,可能会修改内嵌的汇编指令. 我试了一下,把 O2 选项去掉后,重新编译. 测试了很多次,之前出现的问题不再重现了. 难道真的是因为加了 O2 选项的原因吗? 我不能肯定,目前我只能去掉这个 O2 选项.(有人和我一样遇到同样的问…
一.测试准备及原理 测试代码: static void wait(volatile unsigned long dly) { ; dly--); } int main(void) { unsigned ; // LED1,LED2,LED3,LED4对应的4根引脚设为输出 GPBCON = GPB5_out | GPB6_out | GPB7_out | GPB8_out; ){ wait(); GPBDAT = (~(i<<)); // 根据i的值,点亮LED1,2,3,4 ) i = ;…
gcc选项:    -c         只编译,不链接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件.    -std=     指定标准    -E         制作预处理    -o          输出的文件名    -S         产生汇编代码    -Wall      显示全部警告    -On      优化,n可以是1/2/3代表程度    -i         filename指定要包含的头文件  …
程序员是追求完美的一族,即使是一般的程序员大多也都不想看到自己的程序中有甚至那么一点点的瑕疵.遇到任意一条编译器警告都坚决不放过.有人会说:我们可以使用比编译器更加严格的静态代码检查工具,如splint. 这个建议也很不错.不过lint工具使用起来较繁琐,有时候还需要记住一些特定符号并插入到你自己的代码中才行,门槛较高,这也让很多人止步于此.那么我 们就从此放弃么?不,如今的编译器做得都很好,它可以帮助我们的找到绝大多数可能出现问题的代码,前提是你要学会控制编译器去找到这些问题代码,而熟悉编 译…
一.概念 gcc的-D选项可以定义宏,这是什么意思呢? C语言源程序中有#define定义的宏,可以起到替换.条件编译的功能:定义宏的方式是放在头文件或者C文件中.gcc提供了另外一种宏定义的方法,当然可以想象这样的宏定义方法并不是很好用,但毕竟编译器给我们提供了额外的宏定义的方法.假设程序需要很多宏,不可能这些宏都在编译器中定义,可以说比较重要的宏才会放在gcc的D选项后边. -Dname 定义宏name,默认定义内容为字符串“1” -Dname=defn 定义宏name,并且内容为defn…
原文网址:http://blog.csdn.net/hcx25909/article/details/7383716 程序员是追求完美的一族,即使是一般的程序员大多也都不想看到自己的程序中有甚至那么一点点的瑕疵.遇到任意一条编译器警告都坚决不放过.有人会说:我们可以使用比编译器更加严格的静态代码检查工具,如splint. 这个建议也很不错.不过lint工具使用起来较繁琐,有时候还需要记住一些特定符号并插入到你自己的代码中才行,门槛较高,这也让很多人止步于此.那么我 们就从此放弃么?不,如今的编译…
  autoconf生成的编译选项默认是"-g -O2".这个"-g"选项将我迷惑了,以为生成了GDB调试所需的信息,所以也就没有管后面的"-O2“选项.   实际上在用GDB进行调试的时候,单步跟踪代码,GDB显示的代码非常混乱.要么某些代码行未显示,要么中间插入了很多看起来像库函数的代码.甚至有时检查变量值都不对,但是根据此变量生成的后续结果却是正确的.   查看GCC文档,发现-g与-O选项虽然允许同时使用,但是会产生"surprise”的…