C:使用很多结构可以使程序变慢?

nun*_*nos 4 c performance struct

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

为了在代码中更清晰,我决定代码应该有更多的抽象并创建更多的结构.大多数时候我有两个两层三层深的结构.此版本以30 fps运行.

由于除了结构之外还有其他一些差异,我问你:在C中使用大量结构会显着减慢代码吗?

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

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

struct Level
{
   Bricks* bricks;
}
Run Code Online (Sandbox Code Playgroud)

所以,我使用了很多次breakout.levels [level_in_play] .bricks [i] .visible例如.这可能是一个原因吗?

谢谢.

Dan*_*den 11

执行大量指针解除引用可能会影响性能.当你将一个大型结构拆分成更小的结构时,会发生两件事:

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

引用的位置可能就是在这里咬你的东西.如果可能,尝试在同一malloc块中分配相关的结构,这增加了它们被缓存在一起的可能性.