加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 本地字符串变量的实例化会影响性能吗?

发布时间:2020-12-16 00:07:16 所属栏目:百科 来源:网络整理
导读:我有两种情况: static void CreateCopyOfString() { string s = "Hello"; ProcessString(s); } 和 static void DoNotCreateCopyOfString() { ProcessString("Hello"); } 这两种情况的IL看起来像这样: .method private hidebysig static void CreateCopyOfS
我有两种情况:

static void CreateCopyOfString()
    {
        string s = "Hello";
        ProcessString(s);
    }

static void DoNotCreateCopyOfString()
    {
        ProcessString("Hello");
    }

这两种情况的IL看起来像这样:

.method private hidebysig static void  CreateCopyOfString() cil managed
    {
        // Code size       15 (0xf)
        .maxstack  1
        .locals init ([0] string s)
        IL_0000:  nop
        IL_0001:  ldstr      "Hello"
        IL_0006:  stloc.0
        IL_0007:  ldloc.0
        IL_0008:  call       void ConsoleApplication1.Program::ProcessString(string)
        IL_000d:  nop
        IL_000e:  ret
    } // end of method Program::CreateCopyOfString

.method private hidebysig static void  DoNotCreateCopyOfString() cil managed
    {
          // Code size       13 (0xd)
          .maxstack  8
          IL_0000:  nop
          IL_0001:  ldstr      "Hello"
          IL_0006:  call       void ConsoleApplication1.Program::ProcessString(string)
          IL_000b:  nop
          IL_000c:  ret
    } // end of method Program::DoNotCreateCopyOfString

在第一种情况下,还有对字符串init,stloc.0和ldloc.0的额外调用.
这是否意味着第一种情况比第二种情况更弱,其中字符串直接传递给方法而不是首先将其存储在局部变量中?

我看到了问题Does initialization of local variable with null impacts performance?,但它似乎与我在这里需要知道的有点不同.谢谢.

解决方法

你看一下未经优化的IL,一方面 – 因此所有的“nop”.在构建Release版本时,您可能会发现它生成了不同的代码.

即使使用未经优化的版本,如果您在优化的JIT下运行,我希望它最终得到相同的JITted代码.

即使使用非优化的JIT实际上生成的代码每次调用时都会执行更多的工作,但我会错切地认为这对任何实际应用程序都有重大影响.

如初:

>在开始之前设定绩效目标,并对其进行衡量.>确定哪些决策在以后的性能方面难以解决,并且担心这些决定远远超过这样的决定,这些决定可以在以后更改,而不会影响其他地方.>编写最先简单,最易读的代码.>如果效果不佳,请调查是否进行了有害可读性的更改有助于提高性能以保证疼痛.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读