【轉】編寫高質量代碼改善C#程序的157個建議——建議64:為循環增加Tester-Doer模式而不是將try-catch置於循環內
阿新 • • 發佈:2017-12-06
特殊 bsp 處理 註意 輸出 read seconds ise new
建議64:為循環增加Tester-Doer模式而不是將try-catch置於循環內
如果需要在循環中引發異常,你需要特別註意,應為拋出異常是一個相當影響性能的過程。應該盡量在循環當中對異常發生的一些條件進行判斷,然後根據條件進行處理。
做個測試:
Stopwatch watch = Stopwatch.StartNew(); int x = 0; for (int i = 0; i < 10000; i++) { try {int j = i / x; } catch { } } Console.WriteLine(watch.ElapsedMilliseconds); watch = Stopwatch.StartNew(); for (int i = 0; i < 10000; i++) { if (x == 0) {continue; } int j = i / x; } Console.WriteLine(watch.ElapsedMilliseconds); Console.ReadKey();
輸出為:
796
0
以上代碼中,我們預見了代碼肯能會發生DivideByZeroException異常,於是,調正策略,對異常發生的條件進行了特殊處理:Continue讓效率得到了極大的提升。
轉自:《編寫高質量代碼改善C#程序的157個建議》陸敏技
【轉】編寫高質量代碼改善C#程序的157個建議——建議64:為循環增加Tester-Doer模式而不是將try-catch置於循環內