首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

浅谈Linux环境下gcc优化级别

代码优化可以说是一个非常复杂而又非常重要的问题,以笔者多年的linux c开发经验来说优化通常分为两个方面,一是人为优化,也就是基于编程经验采用更简易的数据结构函数等来降低编译器负担,二是采用系统自带的优化模式...gcc – o1 首先o1上面还有一个o0,那个是不提供任何优化,项目中几乎不会使用,而o1使用就非常广泛了,o1是最基本的优化,主要对代码的分支,表达式,常量来进行优化编译器会在较短的时间下将代码变得更加短小...gcc – o2 这个优化级别是o1的进阶,在上一级的基础上会进行更严格的细分,最重要的是加入了寄存器的使用。...gcc – o3 这个优化属于非常强大的优化,因为编译器会进行预测,对循环每一层的预测,以便于将循环拆分,可以提高执行效率。...总结 以上就是本文关于浅谈Linux环境下gcc优化级别的全部内容,希望对大家有所帮助。欢迎大家继续参阅本站其他相关专题,感谢朋友们对ZaLou.Cn网站的支持。

1.7K20

GCC 优化级别

1. gcc中指定优化级别的参数有:-O0、-O1、-O2、-O3、-Og、-Os、-Ofast。 2. 在编译时,如果没有指定上面的任何优化参数,则默认为 -O0,即没有优化。 3....参数 -Og 是在 -O1 的基础上,去掉了那些影响调试的优化,所以如果最终是为了调试程序,可以使用这个参数。...不过光有这个参数也是不行的,这个参数只是告诉编译器,编译后的代码不要影响调试,但调试信息的生成还是靠 -g 参数的。 5....参数 -Ofast 是在 -O3 的基础上,添加了一些非常规优化,这些优化是通过打破一些国际标准(比如一些数学函数的实现标准)来实现的,所以一般不推荐使用该参数。 7....如果想知道上面的优化参数具体做了哪些优化,可以使用 gcc -Q --help=optimizers 命令来查询,比如下面是查询 -O3 参数开启了哪些优化: $ gcc -Q --help=optimizers

7.4K10
您找到你想要的搜索结果了吗?
是的
没有找到

Linux 运行级别

运行级别(Runlevel)指的是Unix或者Linux等类Unix操作系统下不同的运行模式,本文记录相关内容。...运行级别 运行级别(Runlevel)指的是Unix或者Linux等类Unix操作系统下不同的运行模式。运行级别通常分为7等,分别是从0到6。...在大多数linux操作系统下一共有如下6个典型的运行级别: 0 停机 1 单用户,Does not configure network interfaces, start daemons,...,但是可以相互切换 查看级别 在Ubuntu下可以通过 $runlevel 查看当前运行级别 $ runlevel N 5 切换级别 telinit num 或者 init num 切换运行级别...,然后再启动到正常的运行级去即可 参考资料 https://www.cnblogs.com/ezhengnan/p/3674624.html https://www.linuxprobe.com/linux-dyxjb.html

6.2K10

编译优化

前端编译优化 10.2.1 Javac的源码与调试 从Javac代码的总体结构来看,编译过程大致可以分为1个准备过程和3个处理过程,它们分别如下 所示。 1)准备过程:初始化插入式注解处理器。...,而在此之后,还有一组内置于Java虚拟机内部的“后端编译器”来完成代码优化以及从字节码生成本地机器码的过程,即前面多次提到的即时编译器或提前编译器,这个后端编译器的编译速度及编译结果质量高低,是衡量Java...在第11章中,我们将会一探后端编译器的运作和优化过程。...,但其实难点并不在于能不能成功翻译出机器码,输出代码优化质量的高低才是决定编译器优秀与否的关键。...本节将介绍几种HotSpot虚拟机的即时编译器在生成代码时采用的代码优化技术,以小见大,见微知著,让读者对编译器代码优化有整体理解。

40620

Linux系统中使用GCC CPU参数优化代码编译

Linux系统中使用GCC CPU参数优化代码编译 使用特定的GCC参数可以使编译出的程序执行效率有较大提升。...具体如下: 1、优化原理: 在编译程序时,借助参数传递的方法,使用与系统CPU相匹配的gcc参数,编译出的程序就是为系统CPU而进行特定优化过的,因而执行速度和效率都会是最好。...2、注意事项 (1) 经过大量测试发现,在RedHat, CentOS系统中通常只能通过参数传递的方法进行编译优化,当然,如果愿意并且能够修改程序的MakeFile也可以达到这一效果,只不过比较复杂,工.../configure ...... # make # make install 这样就通过函数传递方法实现了编译优化。...附:常见CPU优化参数 386: CHOST="i386-pc-linux-gnu" CFLAGS="-march=i386 -O3 -pipe -fomit-frame-pointer" CXXFLAGS

2.3K10

Linux学习笔记之Linux启动级别

对于绝大多数Linux程序员来说,进入Linux系统后一般看到的是黑乎乎的界面(开发模式),因为系统如果启动选择开发模式,会减少启动时间,优化内存等。...5:图形界面(这是linux默认的启动级别,直接进入图形界面) 6:系统重启(不要设置这个!)...下面那句: id:5:initdefault: // 设置系统默认的启动级别 就是用来设定系统的默认启动级别Linux系统中默认是启动级别5,也就是图形界面启动 如果需要修改成默认级别为开发模式,...,按下键盘的【b】按钮,系统就能重新启动,并进入 单用户级别,这样我们就可以按照之前的方法修改 linux系统的启动级别。...这篇随笔主要是记录怎么设置Linux系统的启动级别,后面将会陆续学习Linux系统更多的东西!!! 参考

1.9K10

Linux之运行级别指令

指定运行级别 1.1 基本介绍 1.2 应用实例 1.3 CentOS7后运行级别说明 1....指定运行级别 1.1 基本介绍 运行级别说明: 0 :关机 1 :单用户【找回丢失密码】 2:多用户状态没有网络服务 3:多用户状态有网络服务 4:系统未使用保留给用户 5:图形界面 6:系统重启...常用运行级别是3和5 ,也可以指定默认运行级别. 1.2 应用实例 命令: init [0123456]应用案例:通过init来切换不同的运行级别,比如动5-3,然后关机。...相当于 init 5 级别 To view current default target(查看当前运行级别), run(运行): systemctl get-default ?...systemctl set-default graphical.target 在上述切换运行级别的基础上重启系统后,依然会进入到 init 3 级别的终端界面,就不会再进入到图形界面了

3.1K10

快速学习-Linux运行级别

三、运行级别 运行模式也可以称之为运行级别(Running Level)。 在linux中存在一个进程:init (initialize,初始化),进程id是1。...中存在7种运行级别/模式。...0 — 表示关机级别(不要将默认的运行级别设置成这个值) 1 — 单用户模式(找回root密码的) 2 — 多用户模式,不带NFS(Network File Syetem) 3 — 多用户模式,完全的多用户模式...(不带桌面的,纯命令行模式) 4 — 没有被使用的模式(被保留模式) 5 — X11,完整的图形化界面模式 6 — 表示重启级别(不要将默认的运行级别设置成这个值) 与该级别相关的几个命令(临时切换,立即生效...这些命令其实都是调用的init进程,将数字(运行级别)传递给进程,进程去读配置文件执行对应的操作。

4.8K40

AndResGuard编译速度优化

只有了解了完整的ARG的流程之后,我们才可以对其进行二次开发和二次优化。首先当然先是设立目标了,我们要做什么,然后可以怎么做? TODO 我们打算做些什么?...如何更改编译任务的执行顺序 在对Aab的代码分析过程中,我们其实发现了一些很神奇很微妙的点,对于我们后续的优化产生了重大的启发。...第一个任务完成 从上述流程走通之后,我们只要把ARG的代码进行二次开发,根据对应task任务进行优化,这样我们的第一个任务也就完成了。...Main.gradleRun(inputParam) } return null } 这个就是ARG调用资源文件混淆的代码了,我们基本不需要对其进行大改造就能把这个编译优化完成了...我们是不是可以考虑直接把任务执行在线程内,这样下一个task就可以继续执行了,只要在编译完成之前把任务执行好是不是就可以把这部分资源混淆的时间也给优化掉呢,说干就干,直接上代码。

38130

GCC编译优化选项

GCC编译优化选项 参考GCC文档 http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html....分为如下: O0: 默认选项,目的: 减少编译时间;生成可调试代码(可打断) O/O1: 做一些不显著增加编译时间的优化 O2: 显著提升编译时间,提升代码性能,做不包含`space-speed tradeoff...`的所有优化 O3: 进一步优化,显著增加可执行文件大小。...Os: 优化性能同时不增加可执行文件大小。包含O2选项中不增加代码大小的优化项 Og: 优化性能同时不损害可调试性。包含O1选项中不损害可调试性的优化项 Ofast: 忽视严格的标准编译性。...未调用的函数不会被编译 template独立编译每个类型 template增加编译时间,但往往性能会有更好的提升。

7.6K51

Nginx编译安装优化

nginx安装有两种访问,一种是利用包管理器直接安装,也是新手最简单的安装方式,另一种是源码包编译安装。...源码包编译安装的有点就是灵活,扩展方便,且据说性能要比直接包管理器安装要好,对于很多人说的包管理器安装无法安装最新版、无法升级到最新版等问题,纯属扯淡,不存在,只要你能找到一个好的源。...但是今天主要讲编译安装nginx的一些方法。网上有很多编译安装教程,也有一键安装包,这里不再长篇大论的描述nginx整个编译安装的步骤,只说几个编译安装的小方法。...减小可执行文件 默认的nginx编译选项里使用debug模式的,会插入很多不必要的内容,编译以后文件有好几兆,所以这里去掉nginx的debug模式编译,完成后可执行文件只有几百K。...如同注释掉图上的一行,重新编译。 ? 如图,编译后只有880K。

72110

iOS 编译时间优化

▲ -debug-time-function-bodies:输出每个函数的编译时长 二、优化编译时间 从Xcode配置优化 a....优化头文件搜索路径,避免工程Header Search Paths设置了路径递归引用 d....使用pch预编译头文件 f. 设置Xcode编译线程数 从代码中优化 a. 使用静态库代替源码进行编译,cocoapods-binary b. 减少引用的第三方库,删除无用的头文件引用, c....优化头文件搜索路径 避免工程 Header Search Paths 设置了路径递归引用: Xcode 编译源文件时,会根据 Header Search Paths 自动添加 -I 参数,如果递归引用的路径下子目录越多...PBXNumberOfParallelBuildSubtasks 8 defaults write com.apple.xcode IDEBuildOperationMaxNumberOfConcurrentCompileTasks 8 参考: [iOS 微信编译速度优化分享

2.1K11

AndResGuard编译速度优化

只有了解了完整的ARG的流程之后,我们才可以对其进行二次开发和二次优化。首先当然先是设立目标了,我们要做什么,然后可以怎么做? TODO 我们打算做些什么?...如何更改编译任务的执行顺序 在对Aab的代码分析过程中,我们其实发现了一些很神奇很微妙的点,对于我们后续的优化产生了重大的启发。...第一个任务完成 从上述流程走通之后,我们只要把ARG的代码进行二次开发,根据对应task任务进行优化,这样我们的第一个任务也就完成了。...Main.gradleRun(inputParam) } return null } 复制代码 这个就是ARG调用资源文件混淆的代码了,我们基本不需要对其进行大改造就能把这个编译优化完成了...我们是不是可以考虑直接把任务执行在线程内,这样下一个task就可以继续执行了,只要在编译完成之前把任务执行好是不是就可以把这部分资源混淆的时间也给优化掉呢,说干就干,直接上代码。

2.5K20

早期(编译期)优化

相当多新生的java语法特性,都是靠编译器的“语法糖”来实现,而不是依赖虚拟机的底层改进来支持,java中即时编译器地运行期的优化过程对于程序运行来说更重要,而前端编译器在编译期的优化过程对于程序编码来说关系更加密切...Javac编译编译过程大致可以分为3个过程,分别是解析与填充符号表过程,插入式注解处理器的注解处理过程,分析与字节码生成过程。其步骤之间的关系与交互顺序如图所示: ?...编译时期的数据及控制流分析与类加载时的数据及控制流分析的目的基本上是一致的,但检验范围有所区别,有一些校验项只有在编译期或运行期才能进行的。  字节码生成是java编译过程的最后一个阶段。...字节码生成阶段不仅仅是把前面各个步骤所生成的信息转化成字节码写到磁盘中,编译器还进行了少量的代码添加和转换工作。...泛型与类型擦除,自动装箱、拆箱与遍历循环,条件编译

57200
领券