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

发布于 2024-09-29 06:27:25 字数 200 浏览 6 评论 0原文

例如OGRE3D使用字符串来标识对象,因此每次代码使用对象的名称(字符串)对对象进行操作时,都必须进行字符串操作,并且由于3D引擎对速度非常敏感,所以它如何能是有什么好的方法吗?

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

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

OGRE3D for example uses strings to identify objects, so each time the code does something on an object using its name (a string), it has to do string operations, and since a 3D engine is very sensitive on speed, how can it be a good way on doing it ?

When a computer has to do operations on a string, it does it sequentially, bytes after bytes, so it spend more CPU cycles if the string is longer...

Wouldn't it be faster to use plain variable names in code instead of using string identifiers ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

旧伤还要旧人安 2024-10-06 06:27:25

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

Yes, it would be faster to use plain variable names in code instead of using string identifiers. But sometimes you don't know those names during build-time. Then you need an approach to handle names dynamically. An alternative approach could be to just use primitive integers instead of strings. The integer values could possibly be generated using a hash or a lookup table of strings. But using strings wouldn't violently slow down your program, unless you have a lot of strings of very huge length which all have the same starting characters and only have a few different characters at the end. Normally, comparing strings should lead to a false result relatively early and only for the "true match" it is necessary to compare the two strings completely. However, the comparison of some strings to find objects within a well-organized search structure (like trees etc.) is not the bottleneck of 3D engines and, thus, should not be part of optimization issues

凉宸 2024-10-06 06:27:25

好吧,我得到了一位老师的答案:

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

Well I got the answer by a teacher:

In fact a string identifier, once in a map thus inserted in order, is quickly found with a dichotomic search.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文