今天在学习winform项目时,看到同时是这样解决text文本框变换值的:性能
winform界面是这样的学习
因而我在想,为何不直接进行赋值来进行变换,而经过替换局部字符串来变换呢?二者之间有什么区别?到底哪种的性能会好点?因而带着种种疑问,设计了以下实验:spa
using System; using System.Diagnostics; namespace test { class Program { static void Main(string[] args) { var str1 = "转到编辑界面"; var num = 0; while (num < 5) { test1(str1); test2(str1); num += 1;
System.Console.WriteLine("====================="); } } private static void test1(string str1) { var num = 0; var str = str1; var sw = new Stopwatch(); sw.Start(); while (num < 100000) { if (str == str1) str = str.Replace("编辑", "预览"); else str = str.Replace("预览", "编辑"); num += 1; } sw.Stop(); System.Console.WriteLine(sw.ElapsedMilliseconds); } private static void test2(string str1) { var num = 0; var str = ""; var sw = new Stopwatch(); sw.Start(); while (num < 100000) { str = str == str1 ? "转到预览界面" : "转到编辑界面"; num += 1; } sw.Stop(); System.Console.WriteLine(sw.ElapsedMilliseconds); } } }
运行结果以下:pwa
经过结果咱们知道,二者直接是存在性能差别的,并且直接赋值比局部替换效率高,大概5倍左右。设计
缘由分析:指针
一、Replace须要进行检索、替换,再修改指针地址,而直接赋值的则不须要考虑检索。code
二、字符串具备驻留性,在对变量赋相同值时,不会频繁开辟空间,而是直接将已有字符串的地址赋值给该变量。 orm