程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#性能優化5大技巧(最高可達62倍)

C#性能優化5大技巧(最高可達62倍)

編輯:C#入門知識

優化C#代碼性能的5個小竅門 1、你是否用異常機制來處理過用戶輸入驗證? 如果是,那麼你的程序性能已經降低了62倍。你不相信嗎?等幾分鐘,我將會告訴你怎麼回事。但是在示例之前,我們先了解清楚哪裡進行異常是真正必要的。 舉個例子,你驗證用戶輸入的數據,如果無效,則拋出異常到客戶端(我假定你是基於業務邏輯校驗用戶輸入的)。 [csharp]   class BusinessLogcCheck   {       public void Check()       {           try           {               //Your validation code is here                         }           catch (Exception ex)           {               throw new Exception("My own exception");           }           }   }     親愛的朋友,在接下來的例子中,當你看到了屏幕輸出的結果後,你將會認識到那是多麼糟糕的習慣。讓我們來看下面的代碼。 [csharp]   using System;   using System.Collections.Generic;   using System.Linq;   using System.Text;   using System.Diagnostics;   using System.IO;   using System.Net;   using System.Net.NetworkInformation;   namespace Test1   {       class Program       {           public static void ThrowTest()           {               throw new Exception("This is exceptopn");           }           public static Boolean Return()           {               return false;           }               static void Main(string[] args)           {                   Stopwatch sw = new Stopwatch();               sw.Start();                   try               {                       ThrowTest();               }               catch               {                                 }               sw.Stop();               Console.WriteLine("With Exception " + sw.ElapsedTicks);                   sw.Restart();               try               {                   Return();               }               catch               {                   }               sw.Stop();               Console.WriteLine("With Return " + sw.ElapsedTicks);               Console.ReadLine();           }       }   }     這是你正在等待的輸入結果。     我的證明非常簡單。在一個函數中引發一個異常,而在另一個函數中返回用戶輸入校驗後的布爾值。而且我附加了一個計算器讓你相信異常處理是如何影響代碼性能的。 所以我們可以得出一個結果:不要針對用戶輸入驗證拋出一個異常,而使用布爾值來返回驗證輸入的業務邏輯(或者其他相似的技術)。因為異常對象代價太高了。(不過也高不過你所鐘愛的襯衣。哈哈) 2.絕對不要在循環中使用try-Catch. 是的,這也是和異常處理相關的。我再重復一遍:絕對不要在循環中使用try-Catch。讓我用一個例子來證明。 [csharp]   using System;   using System.Collections.Generic;   using System.Linq;   using System.Text;   using System.Diagnostics;   using System.IO;   using System.Net;   using System.Net.NetworkInformation;   namespace Test1   {       class Program       {           static void Method1()           {               for (int i = 0; i < 1000; i++)               {                   try                   {                       int value = i * 100;                       if (value == -1)                       {                           throw new Exception();                       }                   }                   catch                   {                   }               }           }           static void Method2()           {               try               {                   for (int i = 0; i < 1000; i++)                   {                       int value = i * 100;                       if (value == -1)                       {                           throw new Exception();                       }                   }               }               catch               {               }           }               static void Main(string[] args)           {                   Stopwatch sw = new Stopwatch();               sw.Start();               Method1();               sw.Stop();                   Console.WriteLine("Within Loop " + sw.ElapsedTicks);                   sw.Restart();               Method2();               sw.Stop();               Console.WriteLine("Outside of Loop " + sw.ElapsedTicks);               Console.ReadLine();           }       }   }  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved