在局部变量 C# 上声明字符串的局部常量有什么好处
Is there any benefit on declaring a local constant of string over a local variable C#
在字符串上使用常量对性能有什么明显的好处。假设以下情况
public void MethodUsingConstant()
{
const string searchedText = "foo";
//some operations using searchedText string
}
public void MethodNoUsingConstant()
{
string searchedText = "foo";
//some operations using searchedText string
}
也可以选择将其带到 class-struct 常量字段。
或者,我应该避免对这些微优化考虑太多吗?
仔细想想,其实应该没有太大区别。那是因为当计算机看到一个变量时,它会检索它的内存地址,然后检索值。我已经尝试过这段代码,差异非常小(不到 3 毫秒:BTW 代码 运行 在 ~107 毫秒内)可能会减少到数百万个其他变量:
//Just changed to non const
const string s = "hello";
string full = "";
int k = 0;
for(int i = 0; i < 10000; i++)
{
full += s;
}
一般来说,const 与非 const 的区别在于:该值是否始终保持不变:将其设置为 const
,否则就保留它。这是一个很棒的 link about .NET optimization。
总而言之,只有当您的代码无法以任何其他方式优化时,您才应该关注这些微小的细节,在这种情况下,您的代码就很好。
在字符串上使用常量对性能有什么明显的好处。假设以下情况
public void MethodUsingConstant()
{
const string searchedText = "foo";
//some operations using searchedText string
}
public void MethodNoUsingConstant()
{
string searchedText = "foo";
//some operations using searchedText string
}
也可以选择将其带到 class-struct 常量字段。
或者,我应该避免对这些微优化考虑太多吗?
仔细想想,其实应该没有太大区别。那是因为当计算机看到一个变量时,它会检索它的内存地址,然后检索值。我已经尝试过这段代码,差异非常小(不到 3 毫秒:BTW 代码 运行 在 ~107 毫秒内)可能会减少到数百万个其他变量:
//Just changed to non const
const string s = "hello";
string full = "";
int k = 0;
for(int i = 0; i < 10000; i++)
{
full += s;
}
一般来说,const 与非 const 的区别在于:该值是否始终保持不变:将其设置为 const
,否则就保留它。这是一个很棒的 link about .NET optimization。
总而言之,只有当您的代码无法以任何其他方式优化时,您才应该关注这些微小的细节,在这种情况下,您的代码就很好。