gpt4 book ai didi

vb.net - 在 VB.Net 中,使用静态定义的常量(与等效的字符串文字相比)是否可以提高效率?

转载 作者:行者123 更新时间:2023-12-02 08:57:51 24 4
gpt4 key购买 nike

假设类中有 10 个不同的位置,其中字符串“Abc123”被硬编码。我知道无论如何用常量替换所有这些都是个好主意;我想知道的是,这样做是否可以加快程序的执行速度。不久前我听说 AS3 中是这样做的,尽管我对此还不太确定。

另外,如果用静态定义的常量替换等效的字符串文字可以提高性能,那么性能会提高多少?这在大多数过程/面向对象语言中是一样的吗?但我主要想知道它是否确实提高了性能。谢谢!

最佳答案

这没有什么区别。编译器已经收集具有相同值的相同字符串文字,并将它们转换为单个对象。这是一种非常常见的编译器优化,称为“字符串驻留”,并且使用字典很容易实现,vb.net 编译器也实现了它。

您可以通过使用 ildasm.exe 查看程序集来亲自看到这一点。使用“查看+显示 token 值”,以便您可以看到字符串编号。例如,这段代码:

Sub Main()
Dim s1 = "hello"
Dim s2 = "hello"
End Sub

生成:

  IL_0001:  ldstr      "hello" /* 70000001 */
IL_0006: stloc.0
IL_0007: ldstr "hello" /* 70000001 */
IL_000c: stloc.1

请注意 token 值 70000001 是如何相同的。

关于vb.net - 在 VB.Net 中,使用静态定义的常量(与等效的字符串文字相比)是否可以提高效率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15484409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com