今天在學習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