-O2:在 -O1 的基础上进行更多的优化,以提高程序的运行速度。 -O3:进行所有 -O2 的优化,并进一步进行针对性能的优化,可能会增加编译时间和生成代码的大小。 -Os:针对代码大小进行优化,尽量减少生成的二进制文件大小。 -Ofast:允许编译器进行一些可能违反严格IEEE/ISO浮点标准的优化,以进一步提高性能。 确定“优化...
与-O2相似,不同之处在于它可以使优化执行的时间更长或可能生成更大的代码(以使程序运行更快)。 -Ofast 启用-O3中的所有优化以及可能违反严格遵守语言标准的其他激进优化。 -Os 比如-O2,通过额外的优化来减少代码大小。 -Oz 比如-Os(也就是-O2),但是进一步减少了代码大小。 -Og 像-O1。在将来的版本中,此选...
在上面的IR代码中,可以看到,通过一点一点翻译语法树,生成的IR代码,看起来有点粗糙,其实是可以优化的。 LLVM的优化级别分别是-O0、-O1、-O2、-O3、-Os、-Ofast、-Oz(第一个是大写英文字母O)。 可以使用命令进行优化: clang -Os -S -fobjc-arc -emit-llvm main.m -o main.ll 优化后的IR代码,简洁明了...
对代码有信心时使用:-O2# 激进优化,建议小白鼠使用:-O3# 更加激进地优化速度:-Ofast# Clang的下一代激进优化,作用是可能让代码面对多年后的编译器突然炸了:-O4# 基于O2兼顾体积与速度:-Os# 基于Os尽量减小体积:-Oz# 用于调试:-Og
cpp 文件) -O0 Minimum optimization 最小优化级别 -O1 Restricted optimization for debugging 受限的调试级别优化 -O2 High optimization 高优化 -O3 Maximum optimization 最大优化 -Ospace Optimize for codesize 对代码大小进行优化 -Otime Optimize for maximum performance 优化最大优化级别的运行时间 --cpu <...
LLVM的优化级别分别是-O0、-O1、-O2、-O3、-Os、-Ofast、-Oz(第一个是大写英文字母O)。 可以使用命令进行优化: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 clang-Os-S-fobjc-arc-emit-llvm main.m-o main.ll (滑动显示更多) 优化后的IR代码,简洁明了(优化等级并不是越高越好,release模式下为...
比如-Os(也就是-O2),但是进一步减少了代码大小。 -Og 像-O1。在将来的版本中,此选项可能会禁用不同的优化,以提高可调试性。 -O 相当于- O2。 -O4 and higher 目前相当于-O3 -g,-gilne-tables-only,-gmodules 控制调试信息输出。注意,Clang调试信息在-O0下工作得最好。当指定多个以-g开头的选项时,最...
MinSize,針對大小進行最佳化 (使用Os)。 MaxSpeed,針對速度進行最佳化 (使用O2)。 Full,最佳化相當耗時 (使用O3)。 PositionIndependentCode選擇性的bool參數。 產生位置獨立程式碼 (PIC) 以用於共用程式庫。 PrecompiledHeader選擇性的string參數。 啟用在建置期間建立或使用先行編譯標頭檔。
GCC目前由世界各地不同的数个程序员小组维护。它是移植到最多中央处理器架构以及最多操作系统的编译器。由于GCC已成为GNU系统的官方编译器(包括GNU/Linux家族),它也成为编译与创建其他操作系统的主要编译器,包括BSD家族、Mac OS X、NeXTSTEP与BeOS。 GCC通常是跨平台软件的编译器首选。有别于一般局限于特定系统与运...
-O2 is based on -O1 opt adds: -inline -mldst-motion -gvn -elim-avail-extern -slp-vectorizer -constmerge opt drops: -always-inline clang adds: -vectorize-loops -vectorize-slp -O3 is based on -O2 opt adds: -callsite-splitting -argpromotion -Ofast is based on -O3, valid in clang ...