gpt4 book ai didi

C:使用大量结构会使程序变慢吗?

转载 作者:太空狗 更新时间:2023-10-29 15:10:54 24 4
gpt4 key购买 nike

我正在编码一个突破性的克隆。我有一个版本,其中我只有一层深度的结构。此版本以 70 fps 运行。

为了让代码更清晰,我决定代码应该有更多的抽象并创建更多的结构。大多数时候我有两两三层深的结构。此版本以每秒 30 帧的速度运行。

由于除了结构之外还有一些其他差异,我问你:在 C 中使用大量结构是否会显着降低代码速度?

例如在第二个版本中,我使用:

struct Breakout
{
Ball ball;
Paddle paddle;
Level* levels;
}

struct Level
{
Bricks* bricks;
}

因此,我经常使用 breakout.levels[level_in_play].bricks[i].visible 等例子。这是可能的原因吗?

谢谢。

最佳答案

进行大量指针取消引用可能会影响性能。当您将一个大结构拆分为多个较小的结构时,会发生两件事:

  1. 访问子结构的成员需要额外的指针解引用和内存获取,这会稍微慢一些,并且
  2. 您可以减少 locality of reference ,这会导致更多的缓存未命中和页面错误,并会大大降低性能。

引用文献 1 的位置可能是这里的问题所在。如果可能,请尝试在同一个 malloc block 中分配相关结构,这会增加它们被缓存在一起的可能性。

关于C:使用大量结构会使程序变慢吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2926062/

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