• .NET6 字符串内插/string.Format/直接拼接字符串 三种情况下的简单性能测试


    测试代码:

    const int loopNum = 1 * 100000;
    var str1 = "";
    var str2 = "";
    var str3 = "";
    var sw = new System.Diagnostics.Stopwatch();
    
    // 1、ToString() 耗时
    Test(1);
    Console.WriteLine($"ToString():{sw.Elapsed.TotalMilliseconds}");
    sw.Reset();
    
    // 2、字符串内插 耗时
    Test(2);
    Console.WriteLine($"字符串内插:{sw.Elapsed.TotalMilliseconds}");
    sw.Reset();
    
    // 3、Format 耗时
    Test(3);
    Console.WriteLine($"Format:{sw.Elapsed.TotalMilliseconds}");
    sw.Reset();
    
    Console.ReadLine();
    
    // ToString 测试
    void ToStringTest()
    {
        for (var i = 0; i < loopNum; i++)
        {
            str1 = "途谈锈零狭躲玻腹仆斑" + loopNum + "必嘉支冰诵充掉兴桶喜商脑炕渗浓般徐尊绸询";
        }
    }
    
    
    // 字符串内插 测试
    void InsertTest()
    {
        for (var i = 0; i < loopNum; i++)
        {
            str2 = $"途谈锈零狭躲玻腹仆斑{loopNum}必嘉支冰诵充掉兴桶喜商脑炕渗浓般徐尊绸询";
        }
    }
    
    // Format 测试
    void FormatTest()
    {
        for (var i = 0; i < loopNum; i++)
        {
            str3 = string.Format("途谈锈零狭躲玻腹仆斑{0}必嘉支冰诵充掉兴桶喜商脑炕渗浓般徐尊绸询", loopNum);
        }
    }
    
    void Test(int type)
    {
        sw.Start();
    
        switch (type)
        {
            case 1:
                ToStringTest();
                break;
            case 2:
                InsertTest();
                break;
            case 3:
                FormatTest();
                break;
            default:
                break;
        }
    
        sw.Stop();
    }
    View Code
    食用方法:VS2022新建一个控制台项目,将代码丢进去跑就行了

    测试结果

    从测试结果来看,性能排序:字符串内插 > string.Format > 直接拼接字符串
    当然测试结果仅供参考,不同版本的C#可能会有差异
  • 相关阅读:
    媒介管理系统权限设计方案
    document.ready和window.onload区别,顺带jQuery的ready方法
    nvm管理node版本
    async await一些小结
    Git学习
    详解JavaScript中的正则表达式
    JavaScript中的事件循环机制跟函数柯里化
    前端面试遇到的问题
    ES6在工作中会用到的核心知识点讲解
    JavaScript中的事件委托机制跟深浅拷贝
  • 原文地址:https://www.cnblogs.com/souphm/p/16400042.html
Copyright © 2020-2023  润新知