例如 OGRE3D 使用字符串来识别对象,所以每次代码使用对象的名称(字符串)对对象进行操作时,它都必须进行字符串操作,并且由于 3D 引擎对速度非常敏感,它怎么可能是这样做的好方法吗?
当计算机必须对字符串进行操作时,它会按字节顺序执行操作,因此如果字符串较长,它会花费更多的 CPU 周期......
在代码中使用普通变量名而不是使用字符串标识符不是更快吗?
例如 OGRE3D 使用字符串来识别对象,所以每次代码使用对象的名称(字符串)对对象进行操作时,它都必须进行字符串操作,并且由于 3D 引擎对速度非常敏感,它怎么可能是这样做的好方法吗?
当计算机必须对字符串进行操作时,它会按字节顺序执行操作,因此如果字符串较长,它会花费更多的 CPU 周期......
在代码中使用普通变量名而不是使用字符串标识符不是更快吗?
是的,在代码中使用普通变量名而不是使用字符串标识符会更快。但有时您在构建时不知道这些名称。然后,您需要一种动态处理名称的方法。另一种方法可能是只使用原始整数而不是字符串。整数值可能是使用散列或字符串查找表生成的。但是使用字符串不会大大减慢你的程序,除非你有很多长度非常大的字符串,它们都有相同的起始字符并且最后只有几个不同的字符。通常,比较字符串会相对较早地导致错误结果,并且只有“真正匹配”才需要完全比较两个字符串。然而,
好吧,我得到了老师的答案:
事实上,一旦按顺序插入到映射中的字符串标识符,就可以通过二分搜索快速找到。