草庐IT

OPTIMIZATION

全部标签

c++ - 如何编写可转换代码,32 位/64 位?

一个特定于C++的问题。所以我读了一个关于什么使程序成为32位/64位的问题,它得到的答案是这样的(抱歉我找不到这个问题,几天前我看过它但我再也找不到它了:():只要你不做任何“指针假设”,你只需要重新编译它。所以我的问题是,什么是指针假设?据我了解,有32位指针和64位指针,所以我认为这与那个。请展示它们之间的代码差异。在编写代码时要记住的任何其他好习惯,这有助于它在to之间轻松转换,也欢迎:)请与他们分享示例附言。我知道有这个帖子:Howdoyouwritecodethatisboth32bitand64bitcompatible?但我认为对于像我这样的新程序员来说,这有点笼统,没

c++ - C++ 编译器会消除赋值重复吗?

如果我有一个示例函数,例如:voidfunc1(floata,floatb,floatc){setA(a);setB(b);setC(c);}调用内联函数:inlinevoidsetA(floata){m_a=a;m_isValid=false;}inlinevoidsetB(floatb){m_b=b;m_isValid=false;}inlinevoidsetC(floatc){m_c=c;m_isValid=false;}我应该关心“m_isValid=false”重复项还是编译器通过优化消除它们? 最佳答案 是的,这通常称为

java - 是否有可能比 C 中的相同程序(优化)更快地获得 Java 程序?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。关闭9年前。关于您编写​​的代码问题的问题必须在问题本身中描述具体问题—并且包括有效代码以重现它。参见SSCCE.org寻求指导。要求提供代码的问题必须表现出对所解决问题的最低限度的理解。包括尝试过的解决方案、为什么它们不起作用,以及预期结果。另请参阅:StackOverflowquestionchecklistImprovethisquestion关于C/C++的优化是在编译时产生的,而Java的优化是在运行时产生的。是否有可能比C中的相同程序(优化的)更快地获得Java程序?我知道运行时优化可能比

c++ - "Return value optimization"会导致未定义的行为吗?

阅读this一位回复者指出的维基百科文章针对以下问题:C++Copyconstructor,temporariesandcopysemantics我遇到了这条线Dependingonthecompiler,andthecompiler'ssettings,theresultingprogrammaydisplayanyofthefollowingoutputs:这不符合未定义行为的条件吗?我知道这篇文章说Dependingonthecompilerandsettings但我只想清除它。 最佳答案 不,这不是未定义的行为。未定义的行为

c++ - C/C++ 的 JIT 优化器

我在阅读有关JIT相对于预编译的优势的文章,其中提到的其中一项是JIT可以根据实际运行时数据调整分支预测。自从我在大学里编写编译器以来已经有很长一段时间了,但在我看来,在大多数情况下(没有明确的goto),预编译代码也可以实现类似的东西。考虑以下代码:testxjneL2:L1:...jmpL3:L2:...L3:如果我们有一些运行时工具可以查看“jneL2”为真的次数,它可以物理交换L1:block和L2:block中的所有指令。当然,它必须知道在交换期间两个block内都没有线程,但这些都是细节...testxjeqL1:L2:...jmpL3:L1:...L3:我知道当程序代码加

c++ - 两个交替的字符如何高效或者不循环输出?

解释这个问题有点棘手,但假设必须显示两个交替的字符:for(intn=0;n是否有一种单线或更有效的方法来完成上述任务?(即使用类似的setfill())? 最佳答案 我想我会保持简单:staticconstchars[]="XY";for(intn=0;n另一种明显的可能性是一次只写出两个字符:for(intn=0;n 关于c++-两个交替的字符如何高效或者不循环输出?,我们在StackOverflow上找到一个类似的问题: https://stackove

c++ - 哪个更快?函数调用还是条件 if 语句?

在回答这个问题之前,请考虑分支预测。在某些情况下,我可以在函数指针的帮助下将条件语句替换为对函数的调用。类似这样的事情。(对于类似类型的senario,您可以考虑基于组件的编程而不是继承)classShape{floatArea(){if(type==SQUARE){returnlength*length;}elseif(type==RECTANGLE){returnlength*breadth;}}}同一个类可以这样写。classShape{voidSetAreaFunction(void*funcptr)//thisfunctionisusedtosetthecurrentArea

c++ - 文件夹和命名空间会影响 C++ 和跨平台的性能吗?

有人问了一个关于whethernamespaceandfolderstructurewouldaffectperformanceofanassemblyinC#的问题.答案非常有用,但特定于C#和CLR。​​如果程序集是用C++和gcc编写的,命名空间和文件夹结构将如何影响程序集的性能?在其他操作系统(如Linux或MacOS)上情况如何?如果有任何重大的性能问题,我应该做什么或避免做什么以最大限度地提高性能? 最佳答案 您的目录层次结构和命名空间都不会影响您编译的代码。您的编译器将生成的代码将是相同的。这适用于所有编译器和所有操作

c++ - 为什么具有多个嵌套循环的代码可以在 GCC 上立即完成,但在 VS 上却需要永远?

longlongr=0;longlongk=0;for(;k此代码在i3Core上执行时间为0.000001秒,在i7Core上使用boost::timer::auto_cpu_timer进行了检查。但是对于visualstudio2010,它似乎可以无限期地运行。GCC或VS有什么问题?GCC优化过度了吗? 最佳答案 是的,GCC正在优化该代码。具体来说,它知道您没有使用结果,所以它会删除所有结果。(您永远不会使用变量r。)这叫做DeadCodeElimination.为了防止编译器优化它,您需要以某种方式使用结果。尝试在最后打印

C++ 性能/内存优化指南

有人有C++内存优化指南的资源吗?最佳实践、调整等?举个例子:Classxxx{public:xxx();virtual~xxx();protected:private:};由于此类中没有protected和私有(private)的项目,因此摆脱protected和私有(private)的编译器或内存分配会有任何好处吗?更新:程序员是做什么的:Classxxx{public:xxx();virtual~xxx();public:morestuff();more();ifndef__BUILD_WIN__public:evenmore();envenmore2();endifprotec