.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(); }
食用方法:VS2022新建一个控制台项目,将代码丢进去跑就行了
测试结果
从测试结果来看,性能排序:字符串内插 > string.Format > 直接拼接字符串
当然测试结果仅供参考,不同版本的C#可能会有差异