gpt4 book ai didi

c++ - 在函数定义中使用引用参数 : perfomance?

转载 作者:太空宇宙 更新时间:2023-11-04 15:05:02 26 4
gpt4 key购买 nike

是否知道两种变体中哪一种工作得更快,或者它们相同,或者比较不正确。

Vector test(Vector &vec)
{
// return modified vector, or write directly to vec,
// or do not return anything, but access vec anyway
}

Vector test(Vector vec)
{
// same (but no reference)
}

我问是因为我应该知道,为 Direct3D 游戏创建最佳优化代码。

更新:我说的是来自 xnamath.h(d3d sdk) 的 XMVECTOR - 16 字节,4 个 float 。

最佳答案

这不是那种可以概括的东西。

Google 搜索 XMVECTOR,我得到了

typedef __m128 XMVECTOR;

因此尽管是 16 个字节,它都是一个 SSE 机器寄存器,所以你当然应该按值传递这个傻瓜。引用寄存器中的某些内容只会冒将其强制压入堆栈的风险。

编辑:即使您没有使用上面的 typedef,XMVECTOR 可能仍然是一种被编译器区别对待的特殊类型。请注意有关 XBox 平台的说明。无论如何,我在下面所说的都是双倍的:


将微优化视为惯用的做法是错误的。微优化从机器代码开始。这里的起点应该是探查器指向的任何机器指令,因为任何程序中都有太多微小的零碎部分,您无法仅凭直觉找到缓慢的部分。

如果您刚刚开始第一个优化项目,您应该研究不同的分析工具(它会告诉您程序的哪个部分速度慢)并熟悉其中一个。一旦您深入研究,当您不能通过调整源代码的内容来提高速度时,您将不得不开始分析机器指令。这需要您熟悉 CPU 及其指令集的详细信息。只有这样,您才能有效地开始调整源代码如何做小事情的细微差别。

如果您不太了解 CPU 如何执行指令,请不要跳到优化这类事情。考虑到大鱼在程序的算法和整体结构中,这完全是浪费时间。

关于c++ - 在函数定义中使用引用参数 : perfomance?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17935386/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com