草庐IT

dp优化

全部标签

c++ - 有没有办法为 C++ 优化 doxygen?

对于Qt/C++项目,我们将使用doxygen生成一些文档,因此,我正在寻找“最佳”配置文件。我在想的一件事是你有这样的东西OPTIMIZE_OUTPUT_FOR_C=NOOPTIMIZE_OUTPUT_JAVA=NOOPTIMIZE_FOR_FORTRAN=NOOPTIMIZE_OUTPUT_VHDL=NO但我找不到类似C++的东西,而且我不确定我是否需要C++之类的东西。是否有类似“OPTIMIZE_OUTPUT_FOR_C++”的选项?谢谢约翰 最佳答案 在我看来,Doxygen默认针对C++进行了优化。据我所知,C++是Do

c++ - GCC 优化在运行时产生 "Undefined symbol"

我现在有一个让我很困惑的问题:我有一段用C++编写的软件,它链接到C中的一个库。我使用通常的方式包含头类extern"C"{#include}只要我不使用gcc的优化,一切都可以正常工作。一旦我什至打开-O1,因此是第一个优化级别,在运行时我从这个库中得到一个符号的“undefinedsymbol”错误。但是,该名称已经过名称修改,由于extern"C",应该将其禁用。调用相关符号的函数是内联的,以防万一。使用的编译器是gcc4.4.3。老实说,我什至不知道要搜索什么,所以如果你们中的任何人能给我一些这种行为的理由,我将不胜感激。感谢您的支持。 最佳答案

c++ - 优化函数调用

是否可以想象C++编译器会优化对仅设置类变量的类成员函数的函数调用?示例:classA{private:intfoo;public:voidbar(intfoo_in){foo=foo_in;}}如果我这样做Atest;A.bar(5);编译器可以优化它以直接访问成员并像这样设置它吗? 最佳答案 是的,这叫做内联。此外,c++专门设计用于在非常复杂的继承情况和模板中支持或使编译器更容易执行此类优化。有人会说,与其他语言相比,c++作为一种高级语言,这是非常独特的壮举。它的“高级”功能(我指的主要是通用编程-模板)在设计时就考虑到了这

c++ - 编译器优化如何影响代码逻辑?

当在完全禁用优化(g++-O0)的情况下编译同一段代码,然后在完全启用优化(g++-O3)的情况下再次编译时,如何源代码本身的逻辑被改变了?例如,编译器可以unwindloops和做constantfolding.这两个优化使得代码执行速度更快,同时不影响原始源代码的完整性。在没有这些优化的情况下运行的任何代码都将在启用它们的情况下运行。但是,编译器优化也会影响代码逻辑。以下是我所知道的两个例子:Removingcopyconstructorsandassignmentoperators来自临时对象可能会消除可能的副作用。重新排列包含浮点值的算法可能会影响浮点错误(希望需要-ffast

c++ - 优化编译器能否从 std::unique_ptr 中移除所有运行时成本?

阅读关于std::unique_ptr的http://en.cppreference.com/w/cpp/memory/unique_ptr,我天真的印象是,一个足够聪明的编译器可以用裸指针替换unique_ptr的正确使用,并在unique_ptr时放入一个delete被摧毁。事实真的如此吗?如果是这样,是否有任何主流优化编译器真的这样做了?如果不是,是否可以编写一些具有unique_ptr的部分/全部编译时安全优势的东西,可以优化为没有运行时成本(空间或时间)?注意那些(适本地)担心过早优化的人:这里的答案不会阻止我使用std::unique_ptr,我只是好奇它是一个非常棒的工具

c++ - 从子字符串生成优化字符串的算法

假设我有一个子字符串集合,例如:stringa={"cat","sensitive","ate","energy","tense"}那么输出应该如下:catensesensitivenergy我该怎么做? 最佳答案 这个问题被称为最短常见超弦问题,它是NP-hard问题,因此如果您需要一个精确的解决方案,那么尝试所有可能性并选择最佳解决方案是再好不过的事情了。一种可能的指数解决方案是生成输入字符串的所有排列,为每个排列贪婪地找到最短的公共(public)超串(排列指定字符串的顺序并且可以证明对于固定顺序贪婪算法总是正确工作)并选择最

c++ - 可以优化 C++ 类中引用的存储吗?

C++语言是否允许打印以下代码,例如1而不是16?根据其他答案,我猜是的,但这种情况似乎没有具体涉及。#include"iostream"#include"cstdlib"usingnamespacestd;structas_array{double&a,&b;as_array(double&A,double&B):a(A),b(B){}double&operator[](constinti){switch(i){case0:returnthis->a;break;case1:returnthis->b;break;default:abort();}}};intmain(){cout

c++ - 如何通过优化查看 C++ 代码的编译器重构

我想知道当优化打开时,是否/如何能够看到编译器如何使用clang++/g++重新格式化一段代码。我知道英特尔编译器有一个生成相关输出的标志,但我似乎无法在其他编译器中找到等效项。 最佳答案 所以,感谢您的指导,我发现了一些非常酷的东西,所以我想分享一下:使用Clang++-4.0,可以按如下方式编译可执行文件:clang++-4.0-std=c++14-O3-fsave-optimization-record-foptimization-record-file=myOptfile.yamlsourceFile.cpp这会在myOpt

无人机路径优化(八):五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划(提供MATLAB代码)

一、五种算法(DBO、LO、SWO、COA、GRO)简介1、蜣螂优化算法DBO蜣螂优化算法(Dungbeetleoptimizer,DBO)由JiankaiXue和BoShen于2022年提出,该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁殖行为的启发所得。单目标优化:蜣螂优化算法(Dungbeetleoptimizer,DBO)_蜣螂算法-CSDN博客参考文献:Xue,J.,Shen,B.Dungbeetleoptimizer:anewmeta-heuristicalgorithmforglobaloptimization.JSupercomput(2022).Dungbeetleoptimi

c++ - 如何优化一个周期?

我有以下瓶颈功能。typedefunsignedcharbyte;voidCompareArrays(constbyte*p1Start,constbyte*p1End,constbyte*p2,byte*p3){constbyteb1=128-30;constbyteb2=128+30;for(constbyte*p1=p1Start;p1!=p1End;++p1,++p2,++p3){*p3=(*p1我想用SSE2内部函数替换C++代码。我试过_mm_cmpgt_epi8但它使用了签名比较。我需要无符号比较。有什么技巧(SSE、SSE2、SSSE3)可以解决我的问题吗?注意:在这种