点击查看火车头
#pragma GCC optimize(3)
#pragma GCC target("avx")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#pragma GCC optimize("-fgcse")
#pragma GCC optimize("-fgcse-lm")
#pragma GCC optimize("-fipa-sra")
#pragma GCC optimize("-ftree-pre")
#pragma GCC optimize("-ftree-vrp")
#pragma GCC optimize("-fpeephole2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fcaller-saves")
#pragma GCC optimize("-fcrossjumping")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-fwhole-program")
#pragma GCC optimize("-freorder-blocks")
#pragma GCC optimize("-fschedule-insns")
#pragma GCC optimize("inline-functions")
#pragma GCC optimize("-ftree-tail-merge")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("-fstrict-aliasing")
#pragma GCC optimize("-fstrict-overflow")
#pragma GCC optimize("-falign-functions")
#pragma GCC optimize("-fcse-skip-blocks")
#pragma GCC optimize("-fcse-follow-jumps")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("-fpartial-inlining")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("-freorder-functions")
#pragma GCC optimize("-findirect-inlining")
#pragma GCC optimize("-fhoist-adjacent-loads")
#pragma GCC optimize("-frerun-cse-after-loop")
#pragma GCC optimize("inline-small-functions")
#pragma GCC optimize("-finline-small-functions")
#pragma GCC optimize("-ftree-switch-conversion")
#pragma GCC optimize("-foptimize-sibling-calls")
#pragma GCC optimize("-fexpensive-optimizations")
#pragma GCC optimize("-funsafe-loop-optimizations")
#pragma GCC optimize("inline-functions-called-once")
#pragma GCC optimize("-fdelete-null-pointer-checks")
#pragma GCC optimize("-frename-registers")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fstrict-overflow")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-functions")
#pragma GCC optimize("-fcse-follow-jumps")
#pragma GCC optimize("-fcse-skip-blocks")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("-fpartial-inlining")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("-fschedule-insns")
#pragma GCC optimize("inline-functions")
#pragma GCC optimize("-ftree-tail-merge")
#pragma GCC optimize("-ftree-pre")
#pragma GCC optimize("-ftree-vrp")
#pragma GCC optimize("-fpeephole2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fcaller-saves")
#pragma GCC optimize("-fcrossjumping")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-fwhole-program")
#pragma GCC optimize("-freorder-functions")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("inline-functions")
#pragma GCC optimize("-ftree-tail-merge")
#pragma GCC optimize("-ftree-pre")
#pragma GCC optimize("-ftree-vrp")
#pragma GCC optimize("-fpeephole2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fcaller-saves")
这段代码是一段C++编译优化指令,用于优化编译器对程序代码的优化。编译器优化是指在保持程序正确性的前提下,通过各种方法减少程序的大小、提高程序的运行速度。这些优化指令告诉编译器如何对代码进行优化。
-
#pragma GCC optimize(3)
:告诉编译器使用等级3的优化。等级3的优化包括许多高级优化技术,如循环展开、函数内联等。 -
#pragma GCC target("avx")
:告诉编译器针对AVX指令集进行优化。AVX(Advanced Vector Extensions)是一种Intel处理器支持的向量计算扩展,可以提高浮点运算和向量运算的性能。 -
#pragma GCC optimize("Ofast")
:告诉编译器使用“Ofast”优化选项。Ofast是一种优化级别,表示“优化速度,不惜一切代价”。在这种优化级别下,编译器会尝试使用各种优化技术,以提高程序的运行速度,但可能会导致程序的大小增加。 -
#pragma GCC optimize("inline")
:告诉编译器将函数内联。内联函数是指将函数体替换为函数调用的过程,这样可以减少函数调用的开销,提高程序的运行速度。 -
#pragma GCC optimize("-fgcse")
:告诉编译器启用全局公共子表达式消除优化。全局公共子表达式消除是指在程序中查找并消除所有公共子表达式,以减少程序的大小和提高运行速度。 -
#pragma GCC optimize("-fgcse-lm")
:告诉编译器启用全局公共子表达式消除,并启用循环不变代码 Motion。循环不变代码 Motion是指将循环不变的代码移出循环,以减少循环的计算次数,提高程序的运行速度。 -
#pragma GCC optimize("-fipa-sra")
:告诉编译器启用 interprocedural 分析优化。interprocedural 分析是指在程序中分析函数之间的调用关系,以优化函数调用。 -
#pragma GCC optimize("-ftree-pre")
:告诉编译器启用树预处理优化。树预处理优化是指在编译器对程序进行优化之前,对程序进行预处理,以提高优化的效果。 -
#pragma GCC optimize("-ftree-vrp")
:告诉编译器启用树向量寄存器分配优化。树向量寄存器分配是指在编译器对程序进行优化时,将向量运算分配到不同的寄存器中,以提高向量运算的性能。 -
#pragma GCC optimize("-fpeephole2")
:告诉编译器启用 peephole 优化器。peephole 优化器是一种简单的优化器,可以在程序中查找并消除一些特定的代码模式,以减少程序的大小和提高运行速度。 -
#pragma GCC optimize("-ffast-math")
:告诉编译器启用快速数学优化。快速数学优化是指在编译器对数学运算进行优化,以提高数学运算的性能。 -
#pragma GCC optimize("-fsched-spec")
:告诉编译器启用调度优化。调度优化是指在编译器对程序进行优化时,对程序中的指令进行重新排序,以提高程序的运行速度。 -
#pragma GCC optimize("unroll-loops")
:告诉编译器启用循环展开优化。循环展开是指将循环展开成多个连续的迭代,以减少循环的计算次数,提高程序的运行速度。 -
#pragma GCC optimize("-falign-jumps")
:告诉编译器启用跳转对齐优化。跳转对齐优化是指在编译器对程序进行优化时,将跳转指令对齐到相同的寄存器中,以减少跳转的开销,提高程序的运行速度。 -
#pragma GCC optimize("-falign-loops")
:告诉编译器启用循环对齐优化。循环对齐优化是指在编译器对程序进行优化时,将循环指令对齐到相同的寄存器中,以减少循环的开销,提高程序的运行速度。 -
#pragma GCC optimize("-falign-labels")
:告诉编译器启用标签对齐优化。标签对齐优化是指在编译器对程序进行优化时,将标签对齐到相同的寄存器中,以减少标签的开销,提高程序的运行速度。 -
#pragma GCC optimize("-fdevirtualize")
:告诉编译器启用虚函数优化。虚函数优化是指将虚函数调用转换为直接函数调用,以减少虚函数调用的开销,提高程序的运行速度。 -
#pragma GCC optimize("-fcaller-saves")
:告诉编译器启用调用者保存优化。调用者保存优化是指在函数调用时,只保存必要的寄存器,以减少函数调用的开销,提高程序的运行速度。 -
#pragma GCC optimize("-fcrossjumping")
:告诉编译器启用跨跳优化。跨跳优化是指在循环中,将跳转指令转换为无条件跳转,以减少跳转的开销,提高程序的运行速度。 -
#pragma GCC optimize("-fthread-jumps")
:告诉编译器启用线程跳跃优化。线程跳跃优化是指将线程局部存储(TLS)对齐到特定的内存地址,以减少内存访问的开销,提高程序的运行速度。 -
#pragma GCC optimize("-funroll-loops")
:告诉编译器启用循环展开优化。循环展开是指将循环展开成多个连续的迭代,以减少循环的计算次数,提高程序的运行速度。 -
#pragma GCC optimize("-fwhole-program")
:告诉编译器启用全程序优化。全程序优化是指在编译器对整个程序进行优化,以减少程序的大小和提高程序的运行速度。 -
#pragma GCC optimize("-freorder-blocks")
:告诉编译器启用块重排优化。块重排优化是指在编译器对程序进行优化时,对程序中的基本块进行重新排序,以减少程序的运行时间。 -
#pragma GCC optimize("-fschedule-insns")
:告诉编译器启用指令调度优化。指令调度优化是指在编译器对程序进行优化时,对程序中的指令进行重新排序,以减少程序的运行时间。 -
#pragma GCC optimize("inline-functions")
:告诉编译器启用内联函数优化。内联函数优化是指将一些小函数的体直接插入到调用点,以减少函数调用的开销,提高程序的运行速度。 -
#pragma GCC optimize("-finline-small-functions")
:告诉编译器启用内联小函数优化。内联小函数优化是指将一些小函数的体直接插入到调用点,以减少函数调用的开销,提高程序的运行速度。 -
#pragma GCC optimize("-ftree-switch-conversion")
:告诉编译器启用树分支转换优化。树分支转换优化是指在编译器对程序进行优化时,将一些分支指令转换为更高效的分支指令,以减少程序的运行时间。 -
#pragma GCC optimize("-foptimize-sibling-calls")
:告诉编译器启用兄弟函数调用优化。兄弟函数调用优化是指在编译器对程序进行优化时,将一些函数调用转换为更高效的函数调用,以减少程序的运行时间。 -
#pragma GCC optimize("-fexpensive-optimizations")
:告诉编译器启用高级优化。高级优化是指在编译器对程序进行优化时,使用一些更复杂的优化技术,以减少程序的大小和提高程序的运行速度。 -
#pragma GCC optimize("-funsafe-loop-optimizations")
:告诉编译器启用不安全的循环优化。不安全的循环优化是指在编译器对程序进行优化时,使用一些可能不安全的优化技术,以减少程序的大小和提高程序的运行速度。 -
#pragma GCC optimize("inline-functions-called-once")
:告诉编译器启用内联一次性函数优化。内联一次性函数优化是指将一些仅被调用一次的函数的体直接插入到调用点,以减少函数调用的开销,提高程序的运行速度。 -
#pragma GCC optimize("-fdelete-null-pointer-checks")
:告诉编译器删除空指针检查优化。空指针检查优化是指在编译器对程序进行优化时,删除一些不必要的空指针检查,以减少程序的运行时间。
这些编译器指令主要用于优化C++代码的编译,从而提高程序的运行速度和减少程序的大小。不同的优化级别和优化选项可以组合使用,以达到更好的优化效果。但在实际编程中,建议根据具体需求和场景选择合适的优化级别和优化选项,以避免因优化过度而导致的代码可读性和可维护性降低。
标签:火车头,程序,GCC,C++,编译器,pragma,优化,optimize From: https://www.cnblogs.com/StarsTwinkle/p/18162144