.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#可能会有差异

 

posted @ 2022-06-22 12:03  塔斯丁狗  阅读(271)  评论(0编辑  收藏  举报