自用草稿,勿参考
private void btn_start_Click(object sender, EventArgs e) { Console.WriteLine("START"); for (int i = 0; i < 10; i++) { testVoid(); Console.WriteLine(""); } Console.WriteLine("All Clear"); Console.WriteLine("==: " + (float)r1 / 10); Console.WriteLine("str.Equals: " + (float)r2 / 10); Console.WriteLine("str.CompareTo: " + (float)r3 / 10); Console.WriteLine("string.Compare: " + (float)r4 / 10); Console.WriteLine("string.CompareOrdinal: " + (float)r5 / 10); Console.WriteLine("string.Equals: " + (float)r6 / 10); }
private static int r1 = 0, r2 = 0, r3 = 0, r4 = 0, r5 = 0, r6 = 0; private static void testVoid() { int start = Environment.TickCount; int total = 0; string orgString = FixedFunc.getRandText(49); List<string> strList = new List<string>(); for (int i = 0; i < 1000000; i++) { strList.Add(FixedFunc.getRandText(49)); } start = Environment.TickCount; foreach (string str in strList) { if (str == orgString) Console.WriteLine("This is 1"); } total = (Environment.TickCount - start); r1 += total; Console.WriteLine("== OVER: " + total); strList.Clear(); for (int i = 0; i < 1000000; i++) { strList.Add(FixedFunc.getRandText(49)); } start = Environment.TickCount; foreach (string str in strList) { if (str.Equals(orgString) == true) Console.WriteLine("This is 2"); } total = (Environment.TickCount - start); r2 += total; Console.WriteLine("str.Equals OVER: " + total); strList.Clear(); for (int i = 0; i < 1000000; i++) { strList.Add(FixedFunc.getRandText(49)); } start = Environment.TickCount; foreach (string str in strList) { if (str.CompareTo(orgString) == 0) Console.WriteLine("This is 3"); } total = (Environment.TickCount - start); r3 += total; Console.WriteLine("str.CompareTo OVER: " + total); strList.Clear(); for (int i = 0; i < 1000000; i++) { strList.Add(FixedFunc.getRandText(49)); } start = Environment.TickCount; foreach (string str in strList) { if (string.Compare(str, orgString) == 0) Console.WriteLine("This is 4"); } total = (Environment.TickCount - start); r4 += total; Console.WriteLine("string.Compare OVER: " + total); strList.Clear(); for (int i = 0; i < 1000000; i++) { strList.Add(FixedFunc.getRandText(49)); } start = Environment.TickCount; foreach (string str in strList) { if (string.CompareOrdinal(str, orgString) == 0) Console.WriteLine("This is 5"); } total = (Environment.TickCount - start); r5 += total; Console.WriteLine("string.CompareOrdinal OVER: " + total); strList.Clear(); for (int i = 0; i < 1000000; i++) { strList.Add(FixedFunc.getRandText(49)); } start = Environment.TickCount; foreach (string str in strList) { if (string.Equals(str, orgString) == true) Console.WriteLine("This is 6"); } total = (Environment.TickCount - start); r6 += total; Console.WriteLine("string.Equals OVER: " + total); }
结果:
START == OVER: 47 str.Equals OVER: 47 str.CompareTo OVER: 375 string.Compare OVER: 375 string.CompareOrdinal OVER: 47 string.Equals OVER: 31 == OVER: 31 str.Equals OVER: 31 str.CompareTo OVER: 375 string.Compare OVER: 359 string.CompareOrdinal OVER: 31 string.Equals OVER: 47 == OVER: 32 str.Equals OVER: 47 str.CompareTo OVER: 406 string.Compare OVER: 375 string.CompareOrdinal OVER: 31 string.Equals OVER: 47 == OVER: 47 str.Equals OVER: 47 str.CompareTo OVER: 375 string.Compare OVER: 375 string.CompareOrdinal OVER: 31 string.Equals OVER: 47 == OVER: 47 str.Equals OVER: 47 str.CompareTo OVER: 375 string.Compare OVER: 375 string.CompareOrdinal OVER: 47 string.Equals OVER: 31 == OVER: 47 str.Equals OVER: 47 str.CompareTo OVER: 375 string.Compare OVER: 391 string.CompareOrdinal OVER: 31 string.Equals OVER: 47 == OVER: 47 str.Equals OVER: 47 str.CompareTo OVER: 391 string.Compare OVER: 375 string.CompareOrdinal OVER: 47 string.Equals OVER: 31 == OVER: 47 str.Equals OVER: 47 str.CompareTo OVER: 406 string.Compare OVER: 375 string.CompareOrdinal OVER: 47 string.Equals OVER: 47 == OVER: 47 str.Equals OVER: 47 str.CompareTo OVER: 375 string.Compare OVER: 375 string.CompareOrdinal OVER: 47 string.Equals OVER: 31 == OVER: 47 str.Equals OVER: 31 str.CompareTo OVER: 375 string.Compare OVER: 375 string.CompareOrdinal OVER: 31 string.Equals OVER: 31 All Clear ==: 43.9 str.Equals: 43.8 str.CompareTo: 382.8 string.Compare: 375 string.CompareOrdinal: 39 string.Equals: 39
结论:
在我的电脑上
比较是否相等最好用 string.equals
比较大小最好用 string.CompareOrdinal