幾種比較方法的效率
int num = 10000000;
string str1 = "abcdaefvff";
string str2 = "abcdsafsafed";
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
for(int i=0;i < num; i++)
{
string.CompareOrdinal(str1, str2);// StringComparison.Ordinal 使用序號排序規則比較字符串。
}
stopwatch.Stop();
Console.WriteLine(stopwatch.ElapsedMilliseconds);///84ms
stopwatch.Restart();
for (int i = 0; i < num; i++)
{
string.Compare(str1, str2);
}
stopwatch.Stop();
Console.WriteLine(stopwatch.ElapsedMilliseconds);//2349ms
stopwatch.Restart();
for (int i = 0; i < num; i++)
{
string.Compare(str1, str2,StringComparison.Ordinal);//等效於 string.CompareOrdinal(str1, str2)
}
stopwatch.Stop();
Console.WriteLine(stopwatch.ElapsedMilliseconds);//86ms
stopwatch.Restart();
for (int i = 0; i < num; i++)
{
str1.CompareTo(str2);
}
stopwatch.Stop();
Console.WriteLine(stopwatch.ElapsedMilliseconds);//2324ms
Console.ReadKey();
可自行看反編譯,爲何 string.Compare(str1, str2,StringComparison.Ordinal)效率會比string.Compare(str1, str2
Checked
int i=2147483647;
int j=checked(i+1);
checked
{
int i=2147483647;
int j=m+1;
}
兩種方式檢查溢出,溢出後會拋異常,可避免 j 變成負數等不期望出現的值。