C++ 访问实体&x27;组件储罐fps

C++ 访问实体&x27;组件储罐fps,c++,entity,frame-rate,C++,Entity,Frame Rate,当我尝试使用以下行访问实体的组件时,会遇到FPS问题: SpriteComponent* sprite = (SpriteComponent*) entity_pointer->getComponent("Sprite"); PositionComponent* position = (PositionComponent*) entity_pointer->getComponent("Position"); getComponent(组件名称)返回可以转换为派生组件类的组件指针 我

当我尝试使用以下行访问实体的组件时,会遇到FPS问题:

SpriteComponent* sprite = (SpriteComponent*) entity_pointer->getComponent("Sprite");
PositionComponent* position = (PositionComponent*) entity_pointer->getComponent("Position");
getComponent(组件名称)返回可以转换为派生组件类的组件指针

我已经注释掉了我的代码中的一些片段,并且我确定像这样的行会降低我的FPS,特别是当我创建了许多实体时

为了详细说明我是如何糟糕地设置实体组件系统的:我有一组控制器指针,它们包含实体指针和组件指针。每个控制器对一个实体执行特定的操作,前提是它具有正确的组件,例如物理控制器使用物理组件给定的速度推进实体的位置。不同的控制器类都是从控制器类派生的,不同的组件是从组件类派生的


现在我对C++和指针都是新的,所以我希望我把它设置好。这两条线会让我的比赛慢很多吗?有什么东西向你扑来吗

按照FPS的定义方式,做一点点工作可以大幅降低FPS,例如从几千到几百,即使你做的任何事情只需要几纳秒,即目标FPS的帧预算的一小部分。花了多少时间?以及
getComponent
做什么-它如何查找组件指针,它访问哪种数据结构(例如未排序数组、排序数组、哈希表、BST等)?如何搜索组件?它是O(n)复杂度还是存储在std::map?无序映射组件列表中;get component返回字符串so处的comp指针:return component_list.at(myCompName);这看起来很无害。这些线是否恰好在所有实体或其他对象上形成一个循环?但与远程调试一样,远程评测也是徒劳的——至少需要完整的代码才能做出比有根据的猜测更好的东西。(而且您仍然没有提供绝对计时,或者至少没有提供数字前后的FPS,所以我还不确定是否存在性能问题。)