gpt4 book ai didi

c# - 缓存字符串有什么值得担心的吗?

转载 作者:太空宇宙 更新时间:2023-11-03 22:36:06 25 4
gpt4 key购买 nike

<分区>

我找不到任何明确回答我的问题的东西,所以我想我会问:这样做是最佳做法还是只是偏好:

public static class FixedStrings
{
public static readonly string foo = "bar";
}

class Example1
{
void UseString()
{
Console.WriteLine(FixedStrings.foo);
}
}

代替:

class Example2
{
void UseString()
{
Console.WriteLine("bar");
}
}

这是我目前的理解(我可能是错的):

  1. 这是内存与 GC 分配的权衡;因此,如果需要字符串的方法经常被调用,或者它处于长时间运行的过程中,那么第一个示例是更好的选择。
  2. 如果内存不是问题,缓存可重复使用的字符串(或任何对象)将减少 GC 花费的时间并提高程序的响应能力。
  3. .NET GC 做得很好,但其中一些字符串会周期性地通过生成,特别是在负载下并且在很长一段时间后可能会导致完全 GC 清理。
  4. Example1 在性能方面几乎总是胜过 Example2

我注意到在来自不同地方的示例代码中,人们同时使用两者。我不确定这是否只是因为 example2 打字速度更快,还是因为阅读偏好。我也很好奇,编译器是否足够聪明,可以自动将其中一些字符串转换为缓存变量?

请记住,我说的所有这些都是我从互联网上学到的,我没有受过正规教育。我假设 example1 更好

可能是非常错误的

这就是我担心这种小优化的原因:

在我的实际项目中并没有那么小;在某些情况下,我可能每秒使用这些字符串数千次。

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