我正在编写一个突破性克隆.我有一个版本,其中我只有一层深度的结构.此版本以70 fps运行.
为了在代码中更清晰,我决定代码应该有更多的抽象并创建更多的结构.大多数时候我有两个两层三层深的结构.此版本以30 fps运行.
由于除了结构之外还有其他一些差异,我问你:在C中使用大量结构会显着减慢代码吗?
例如在第二个版本上,我正在使用:
struct Breakout { Ball ball; Paddle paddle; Level* levels; } struct Level { Bricks* bricks; }
所以,我使用了很多次breakout.levels [level_in_play] .bricks [i] .visible例如.这可能是一个原因吗?
谢谢.
执行大量指针解除引用可能会影响性能.当你将一个大型结构拆分成更小的结构时,会发生两件事:
访问子结构的成员需要额外的指针取消引用和内存提取,这稍微慢一点,并且
您可以减少引用的位置,这会导致更多的缓存未命中和页面错误,并可能大大降低性能.
引用的位置可能就是在这里咬你的东西.如果可能,尝试在同一malloc块中分配相关的结构,这增加了它们被缓存在一起的可能性.