C 用指针传递值而不是值是否会降低程序的速度?

C 用指针传递值而不是值是否会降低程序的速度?,c,C,一位经验丰富的编程人员声称,通过指针传递值会降低程序或至少编译器的速度。这是真的吗 我观看了视频的给定片段 情境: guy有一个小的第三方结构,并按值传递它 为什么好: 1.Small struct不会占用太多空间来减慢参数通过堆栈的速度,而且(理论上)可以实现更好的内存/缓存使用率,因为不使用指针访问内存。有可能编译器/优化器不能像那个家伙提到的那样为您做到这一点。 2.它是第三方结构,在程序开发过程中,其大小不太可能发生变化。 3.当函数签名接受常量指针与非常量指针与值时,函数签名对结构的访

一位经验丰富的编程人员声称,通过指针传递值会降低程序或至少编译器的速度。这是真的吗


我观看了视频的给定片段

情境:
guy有一个小的第三方结构,并按值传递它

为什么好:
1.Small struct不会占用太多空间来减慢参数通过堆栈的速度,而且(理论上)可以实现更好的内存/缓存使用率,因为不使用指针访问内存。有可能编译器/优化器不能像那个家伙提到的那样为您做到这一点。
2.它是第三方结构,在程序开发过程中,其大小不太可能发生变化。
3.当函数签名接受常量指针与非常量指针与值时,函数签名对结构的访问/所有权的表述有所不同

有什么问题:
1.这家伙并没有真正深入地解释到底发生了什么,以及他为什么做这个优化。那么,为什么要这样做并谈论它呢?
2.我不认为这会以任何方式降低编译器/优化器的速度,但我不是这方面的专家

为什么这不应该是一个通用的编程规则:
1.如果您没有使用第三方结构,则很可能在开发过程中结构会发生更改,并且您的代码效率低下,或者需要重写很多。或者,编译器可能会为您完成这项工作,但从一开始就没有意义了。
2.在创建新代码的开发过程中,从性能角度考虑的唯一问题是核心算法和数据结构的效率。如果您编写了糟糕的排序算法,那么通过将一个结构传递给一个值也无济于事。正如评论中提到的,这取决于后果。我怀疑是否有人真的能预见到,当涉及到小型结构时,诸如通过值传递与通过指针传递这样的边缘(性能方面)会对性能产生重大影响。做出这样的决定应该基于对后果的充分了解(最好是更早地解决了这个确切的问题),或者拥有一份分析报告,说明这存在性能问题


考虑到这一点,那么更新游戏(?)窗口的函数(每秒运行60次甚至120次)将被视为程序的核心,并应尽可能优化。这家伙似乎正在研究它,他发现通过按值传递结构而不是按指针传递结构,可以获得更好的结果。

我观看了视频的给定片段

情境:
guy有一个小的第三方结构,并按值传递它

为什么好:
1.Small struct不会占用太多空间来减慢参数通过堆栈的速度,而且(理论上)可以实现更好的内存/缓存使用率,因为不使用指针访问内存。有可能编译器/优化器不能像那个家伙提到的那样为您做到这一点。
2.它是第三方结构,在程序开发过程中,其大小不太可能发生变化。
3.当函数签名接受常量指针与非常量指针与值时,函数签名对结构的访问/所有权的表述有所不同

有什么问题:
1.这家伙并没有真正深入地解释到底发生了什么,以及他为什么做这个优化。那么,为什么要这样做并谈论它呢?
2.我不认为这会以任何方式降低编译器/优化器的速度,但我不是这方面的专家

为什么这不应该是一个通用的编程规则:
1.如果您没有使用第三方结构,则很可能在开发过程中结构会发生更改,并且您的代码效率低下,或者需要重写很多。或者,编译器可能会为您完成这项工作,但从一开始就没有意义了。
2.在创建新代码的开发过程中,从性能角度考虑的唯一问题是核心算法和数据结构的效率。如果您编写了糟糕的排序算法,那么通过将一个结构传递给一个值也无济于事。正如评论中提到的,这取决于后果。我怀疑是否有人真的能预见到,当涉及到小型结构时,诸如通过值传递与通过指针传递这样的边缘(性能方面)会对性能产生重大影响。做出这样的决定应该基于对后果的充分了解(最好是更早地解决了这个确切的问题),或者拥有一份分析报告,说明这存在性能问题


考虑到这一点,那么更新游戏(?)窗口的函数(每秒运行60次甚至120次)将被视为程序的核心,并应尽可能优化。这家伙似乎正在研究它,他发现通过按值传递结构而不是按指针传递结构,可以获得更好的结果。

我观看了视频的给定片段

情境:
guy有一个小的第三方结构,并按值传递它

为什么好:
1.Small struct不会占用太多空间来减慢参数通过堆栈的速度,而且(理论上)可以实现更好的内存/缓存使用率,因为不使用指针访问内存。有可能编译器/优化器不能像那个家伙提到的那样为您做到这一点。
2.它是第三方结构,在程序开发过程中,其大小不太可能发生变化。
3.当函数签名接受常量指针与非常量指针与值时,函数签名对结构的访问/所有权的表述有所不同

什么是