C#中“EQUALS”與“==”的速度比較
最初接觸C#時就一直疑惑,比較字串的方法:“Equals”與“==”在比較時效能有什麼區別呢?相信這個問題也曾困惑著許多人,那麼我們就一起來探討下:
比較一個string是否等於一個值,最初接觸C#的人會這麼寫:
string myStr
= "value" ;
if (myStr.Equals( "value" ))
{
}
if (myStr
== "value" )
{
}
|
然後,會有人笑你很菜,得知把要判斷的value寫在前面效能高些,要這樣寫:
string myStr
= "value" ;
if ( "value" .Equals(myStr))
{
}
if ( "value" ==
myStr)
{
}
|
但或許他也只是從那個笑他很菜的前輩那裡得知應該這樣寫,而正確與否、差別,沒有真正自己去測試過。這裡先不告訴大家上面“前輩”說的正確與否,我們來測試下:
public class Program
{
public static void Main( string []
args)
{
int time
= 100000000;
int start,
end, i;
bool result;
string myStr
= "that's
funny" ;
Console.Title
= "Equals
& == test" ;
////////////////////////////////////////////////////////////////
//
True test 1 - string.Equals("value")
////////////////////////////////////////////////////////////////
//
獲取程式開始後經過的毫秒數
start
= System.Environment.TickCount; //
判斷一次是否相等幾乎不需要時間,所以我們讓計算機判斷一億次,
//
這真是個天文數字,囧
for (i
= 0; i < time; i++)
{
|