使用字符串来识别对象:目的是什么?

时间:2010-10-25 09:23:40

标签: c++ string identifier ogre3d

例如,OGRE3D使用字符串来标识对象,因此每次代码使用其名称(字符串)对对象执行某些操作时,都必须执行字符串操作,并且由于3D引擎对速度非常敏感,因此如何这是一个好方法吗?

当计算机必须对字符串进行操作时,它会按顺序执行,字节后的字节数,因此如果字符串较长,则会花费更多的CPU周期......

在代码中使用普通变量名称而不是使用字符串标识符会不会更快?

2 个答案:

答案 0 :(得分:3)

是的,在代码中使用普通变量名称而不是使用字符串标识符会更快。但有时你在构建期间不知道这些名字。然后,您需要一种动态处理名称的方法。另一种方法可能是使用原始整数而不是字符串。可以使用字符串的散列或查找表生成整数值。但是使用字符串不会猛烈地减慢你的程序,除非你有很多非常大的字符串,它们都有相同的起始字符,最后只有几个不同的字符。通常,比较字符串应该相对较早地导致错误结果,并且仅对于“真实匹配”,有必要完全比较两个字符串。但是,在一个组织良好的搜索结构(如树等)中查找某些字符串的比较不是3D引擎的瓶颈,因此不应该成为优化问题的一部分

答案 1 :(得分:0)

我得到了老师的回答:

事实上,一个字符串标识符,一旦在按顺序插入的地图中,就可以通过二分法搜索快速找到。