草庐IT

PERFORMANCE

全部标签

c++ - C++中比较的效率? (绝对值(X)> 1 对比绝对值(x)!= 0)

我知道-过早的优化。但是我有代码可以查明某个位置是否发生了变化,而不是缓存的位置。当前代码是:if(abs(newpos-oldpos)>1){.....}使用下面的是不是更有效率?if(abs(newpos-oldpos)!=0){....}为什么或为什么不?我目前正在思考哪个更具可读性,并且想知道我是否遗漏了性能差异。 最佳答案 为什么不是这个?if(newpos!=oldpos){...}由于缺少abs(),因此比两者都更高效,并且启动起来更清晰。 关于c++-C++中比较的效率?

algorithm - 3D 中点 A 是否靠近点 B - 距离检查

我正在寻找一种有效的算法来检查一个点是否在3D中的另一个点附近。sqrt((x2-x1)^2+(y2-y1)^2+(z2-z1)^2)这似乎并不太快,实际上我不需要这么大的精度。我还能怎么做? 最佳答案 对距离求平方,并放弃对sqrt()的调用,这样会快得多:(((x2-x1)^2+(y2-y1)^2+(z2-z1)^2当然,在许多情况下,至少可以提前计算出radius*radius并存储为例如squaredRadius。 关于algorithm-3D中点A是否靠近点B-距离检查,我们在

c++ - 迭代器与反向迭代器

我正在使用std::map来存储很多元素(元素对),我有一个“小”疑问。在我的std::map、iterator或reverse_iterator上迭代所有元素哪个更有效? 最佳答案 根据记录,在std::map和std::set容器上取消引用reverse_iterator是比使用iterator慢两倍——在Intel/AMD处理器上同时使用-O3gcc3.4.6和MSVC(在PPC架构上慢近3倍)同样适用于const_reverse_iterator与const_iterator。这是因为reverse_iterator实际上指

c++ - 将函数放在 if 语句中是否有效? (C++)

我见过这样的说法if(SomeBoolReturningFunc()){//dosomestuff//dosomemorestuff}我想知道将函数放在if语句中是否有效,或者是否存在将它们分开会更好的情况,就像这样boolAwesomeResult=SomeBoolReturningFunc();if(AwesomeResult){//dosomeother,moreimportantstuff}...? 最佳答案 我不确定是什么让您认为首先将表达式的结果分配给变量会比评估表达式本身更有效,但这永远不会重要,因此请选择增强您的可读

c++ - 冒泡排序擅长什么?

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:Whatisabubblesortgoodfor?我敢肯定每种算法都有其优点和缺点,那么与其他排序算法相比,冒泡排序又如何呢?(当然我希望答案不是“好学”)

java - 是否有 Java 与 C++ 的真实世界基准?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。关闭9年前。要求提供代码的问题必须表现出对所解决问题的最低限度的理解。包括尝试过的解决方案、为什么它们不起作用,以及预期结果。另请参阅:StackOverflowquestionchecklist要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。Improvethisquestion在我回答这个问题之前,请注意这个问题不是什么:Jav

c++ - 为什么将 return 移动到函数末尾效率较低?

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭10年前。编辑:删除UB后(好地方,我错过了),时间或多或少相同。将标记版主将其删除。这两个函数是相同的,除了foo在两个分支上的if中都有返回,而goo有一个单个return最后:intfoo(){staticintx=0;if(x){x>2?x=0:++x;returnx-1;}else{x++;returnx-1;}}intgoo(){staticintx=0;if(x){x>2?x=0:++x;}

c++ - 如何将并发解决方案应用于类似生产者-消费者的情况

我有一个包含一系列节点的XML文件。每个节点代表一个我需要解析并添加到排序列表中的元素(顺序必须与文件中找到的节点的顺序相同)。目前我使用的是顺序解决方案:structGraphic{boolparse(){//parsing...returnparse_outcome;}};vector>graphics;voidproducer(){for(size_ti=0;iparse())graphics.emplace_back(g);elsedeleteg;}}因此,仅当图形(实际上是派生自Graphic的类的实例、Line、Rectangle等时,这就是new的原因)可以正确解析,它将

c++ - Haskell FFI内存分配性能问题

我正在使用FFItoC将中等数量的数据(~100MB)发送到C程序——只是一个字符串列表。但是,我使用的所有方法似乎都花费了不合理的时间(~10秒)。分析后,似乎是实际的内存分配需要时间。我试过:作为常规字符串发送(newCString)转换为ByteStrings(unsafeUseAsCString)转换为字符vector(unsafeWith>>=withForeignPtr...)通过CFFI发送数据的最快方法是什么? 最佳答案 正如ReidBarton在评论中所说,如果您有100MB的字符串,无论您如何处理它,您的分配一开

c++ - 为什么不太可能/不太可能显示性能改进?

我在代码中进行了很多验证检查,如果任何检查失败,程序就会崩溃。所以所有的检查都不太可能。if((msg=newMsg())==(void*)0)//thisismoreunlikely{panic()//crash}所以我使用了unlikely宏,它在分支预测中提示编译器。但是我没有看到任何改进(我有一些性能测试)。我正在使用gcc4.6.3。为什么没有改善?是因为没有其他情况吗?我应该在构建我的应用程序时使用任何优化标志吗? 最佳答案 ShouldIuseanyoptimizationflagwhilebuildingmyappl