草庐IT

c++ - LTO 与 LLVM 和 CMake

我正在尝试在创建共享库的CMake项目上使用LLVM应用链接时间优化。我的问题和这个问题差不多:SwitchingbetweenGCCandClang/LLVMusingCMake.但是,答案似乎不再适用,因为新版本中不存在llvm-ld。在命令行上,我运行以下命令来获取LTO(假设只有2个.cpp文件):编译成字节码:clang++-cFirstClass.cpp-O3-flto-oFirstClass.bcclang++-cSecondClass.cpp-O3-flto-oSecondClass.bc链接字节码:llvm-linkFirstClass.bcSecondClass.b

c++ - LTO、去虚拟化和虚拟表

比较C++中的虚函数和C中的虚表,编译器在一般情况下(以及对于足够大的项目)在去虚拟化方面是否同样出色?天真地,C++中的虚函数似乎具有更多的语义,因此可能更容易去虚拟化。更新:MooingDuck提到了内联去虚拟化函数。快速检查显示虚拟表错过的优化:structvtab{int(*f)();};structobj{structvtab*vtab;intdata;};intf(){return5;}intmain(){structvtabvtab={f};structobjobj={&vtab,10};printf("%d\n",obj.vtab->f());}我的GCC不会内联f,尽

c++ - 有人对 gcc 的 LTO (C++) 有经验吗?

我的主要兴趣是将代码从头文件移动到源文件(用于解耦),但内联的东西保持相同的性能。我不知道从哪里开始,有人能解释一下该怎么做吗? 最佳答案 我在Firefox和LTO上做了一些测试,显示内存使用、编译时间和运行时Atmyblog还与LLVM进行比较。LTO正在快速发展,GCC4.9比以前的版本好很多。如何让它在给定的应用程序中正常工作并不总是很明显,文本描述了您可能遇到的主要问题(缺少链接器插件、使用胖LTO文件以及在链接处丢弃LTO部分等) 关于c++-有人对gcc的LTO(C++)有

c++ - GCC Profile Guided Optimization (PGO) 收集哪些信息以及哪些优化使用它?

当我启用-fprofile-generate时GCC会收集哪些信息,哪些优化实际上使用了收集的信息(设置-fprofile-use标志时)?我需要在这里引用。我已经搜索了一段时间,但没有找到任何记录。有关链接时间优化(LTO)的信息将是一个加分项!=D 最佳答案 -fprofile-generate启用-fprofile-arcs、-fprofile-values和-fvpt。-fprofile-use启用-fbranch-probabilities、-fvpt、-funroll-loops、-fpeel-loops和-ftrace

c++ - GCC Profile Guided Optimization (PGO) 收集哪些信息以及哪些优化使用它?

当我启用-fprofile-generate时GCC会收集哪些信息,哪些优化实际上使用了收集的信息(设置-fprofile-use标志时)?我需要在这里引用。我已经搜索了一段时间,但没有找到任何记录。有关链接时间优化(LTO)的信息将是一个加分项!=D 最佳答案 -fprofile-generate启用-fprofile-arcs、-fprofile-values和-fvpt。-fprofile-use启用-fbranch-probabilities、-fvpt、-funroll-loops、-fpeel-loops和-ftrace
12