2012年11月10日 星期六

輕量又兼具效能的ORM Framework - Dapper


最近再處理物件和資料對應效能問題,
同時改寫自己的Code Generation小工具,
在找如何提高ORM效能的方法時,
讓我無意見發現這套強大的ORM Framework - Dapper 。
我看網頁上所寫的效能真的有讓我嚇到,
讀取速度快接近IDataReader( 我 實測Dapper 後,發現更快),
但我真正在意的是物件和資料對應效能問題,
我大概去追了一下 Dapper 在處理序列化所使用的方法,
發現它使用  ILGenerator.Emit Method 來快速產生object (Reflection IDataReader ),
就連Linq 2 SQL CompiledQuery 效能都沒 Dapper 來的屌,
而且這各Dapper.dll只有小小的59KB,使用方法也很簡單。
經過自己實測50000筆資料對應,真的要給 Dapper Mapping 大大一個讚,
下面是測試結果和程式碼。




使用 Dapper

string connstr = ConfigurationManager.ConnectionStrings["Develop"].ToString();
            string sql = @"select top(50000) * from AP_LOG";
            string mycount = string.Empty;
            Stopwatch sw = new Stopwatch();
            sw.Reset();
            using (SqlConnection connection = new SqlConnection(connstr))
            {
                // using Dapper
                sw.Start();
                var myquery = connection.Query<AP_LOG>(sql, null);               
                sw.Stop();
                Console.WriteLine("筆數:{0},時間(ms):{1}", myquery.Count().ToString(), sw.ElapsedMilliseconds.ToString());
                Console.ReadLine();
            }



原始文章出自於此




沒有留言:

張貼留言