剛剛接觸C#,據說C#的異常處理很耗費效能。
於是來做個測試。
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Diagnostics;namespace ConsoleApplication2{ class Program { static void Main(string[] args) { Stopwatch w = new Stopwatch(); w.Start(); int a =10; for (int i = 0; i <= 1000; i++) { Int32.TryParse("a", out a); } w.Stop(); Console.WriteLine(w.ElapsedMilliseconds); w.Reset(); w.Start(); for (int i = 0; i <= 1000; i++) { try { Int32.Parse(null); } catch (Exception e) { } } w.Stop(); Console.WriteLine(w.ElapsedMilliseconds); Console.Read(); } }}
輸入的結果為:
0
6780
差距可真夠大的。看來C#中使用 TryParse還是很有必要的!
再來看看java的。同樣的代碼:
public class Test {public static void main(String[] args) {long start = System.currentTimeMillis();for(int i=0; i<1000; i++){try{Integer.parseInt(null);}catch(Exception e){}}System.out.println(System.currentTimeMillis()-start);}}
輸出結果為:
2
差距也夠大的!看來薑還是老的辣啊,微軟最佳化的還不夠……