以下為有網友公司的評估測試及使用規范
大家可以下載word看看
http://pan.baidu.com/s/1hquvRuc
一、和ADO.NET進行的壓力測試
說明:2000並發用戶,此圖為一網友公司對moon.orm的測評
二、和ADO.NET的性能對比測試
說明:同時請求10000條數據,此圖為一網友公司對moon.orm的測評
三、和實體框架的對比測試
using System; using System.Collections.Generic; using System.Data.Entity; using System.Diagnostics; using System.Linq; using System.Text; using Moon.Orm; using EfTest.Models; using eftest; namespace EfTest { class Program { private static readonly Stopwatch Watch = new Stopwatch(); static void Main(string[] args) { Watch.Start(); Database.SetInitializer(new SampleData()); using (var db = new TestContext()) { db.Database.Initialize(false); } Watch.Stop(); //Console.WriteLine("數據庫初始化完成,耗時{0}", Watch.Elapsed); Method01(); StartTest(); } private static void Method01() { Console.WriteLine("查詢預熱,防止第一次查詢影響結果。"); var db = new TestContext(); Console.WriteLine("產品目錄個數:{0}", db.Categories.Count()); Console.WriteLine("客戶個數:{0}", db.Customers.Count()); Console.WriteLine("產品個數:{0}", db.Products.Count()); Console.WriteLine("訂單個數:{0}", db.Orders.Count()); Console.WriteLine("訂單明細個數:{0}", db.OrderDetails.Count()); db.Dispose(); Console.WriteLine("查詢預熱結束-------------------------\r\n"); } private static void StartTest() { Console.WriteLine("單表查詢"); EFTest1(); MoonTest1(); MoonDyanimic(); Console.WriteLine(); Console.WriteLine("連接查詢"); EFTestJoin(); MoonTestJoin(); Console.WriteLine(); Console.WriteLine("嵌套查詢"); EFTestQianTao(); MoonTestQianTao(); Console.Read(); } private static void EFTest1() { Watch.Restart(); var db = new TestContext(); db.Configuration.AutoDetectChangesEnabled=false; var list = db.OrderDetails.Where(m=>m.DetailId>1&&m.UnitPrice>0).ToList(); db.Dispose(); Watch.Stop(); Console.WriteLine(" EFTest1:"+Watch.Elapsed); } private static void MoonTest1() { Watch.Restart(); using (Db db=Db.CreateDefaultDb()) { var mql2=OrderDetailsSet.SelectAll().Where(OrderDetailsSet.UnitPrice.BiggerThan(0).And(OrderDetailsSet.DetailId.BiggerThan(1))); var list2=db.GetEntities<OrderDetails>(mql2); } Watch.Stop(); Console.WriteLine("MoonTest1:"+Watch.Elapsed); } private static void MoonDyanimic() { using (Db db=Db.CreateDefaultDb()) { var list2=db.GetDynamicList("select * from OrderDetails where DetailId>10 ","hi"); } Watch.Restart(); using (Db db=Db.CreateDefaultDb()) { var mql=OrderDetailsSet.SelectAll(); var list2=db.GetDynamicList("select * from OrderDetails where DetailId>1 and UnitPrice>0 ","hi"); } Watch.Stop(); Console.WriteLine("MoonDyanimic:"+Watch.Elapsed); } private static void EFTestJoin() { Watch.Restart(); var db = new TestContext(); db.Configuration.AutoDetectChangesEnabled=false; var list = db.OrderDetails.Where(m=>m.DetailId>3&&m.UnitPrice>0).Select(m => new { m.DetailId, m.UnitPrice, m.Product.ProductName }).ToList(); foreach (var A in list) { Console.WriteLine(A.DetailId+" "+A.UnitPrice+" "+A.ProductName); break; } db.Dispose(); Watch.Stop(); Console.WriteLine(" EFTestJoin:"+Watch.Elapsed); } private static void MoonTestJoin() { Watch.Restart(); using (Db db=Db.CreateDefaultDb()) { var mql2=OrderDetailsSet.Select(OrderDetailsSet.DetailId,OrderDetailsSet.UnitPrice); var mql=ProductsSet.Select(ProductsSet.ProductName); var join=mql.LeftJoin(mql2). ON(OrderDetailsSet.ProductId.Equal(ProductsSet.ProductId)). Where(OrderDetailsSet.UnitPrice.BiggerThan(0).And(OrderDetailsSet.DetailId.BiggerThan(3))); var list2=db.GetDictionaryList(join); foreach (var A in list2) { Console.WriteLine(A["DetailId"]+" "+A["UnitPrice"]+" "+A["ProductName"]); break; } } Watch.Stop(); Console.WriteLine("MoonTestJoin:"+Watch.Elapsed); } private static void MoonTestQianTao() { Watch.Restart(); using (Db db=Db.CreateDefaultDb()) { var mql=ProductsSet.SelectAll().Where( ProductsSet.CategoryId.In( CategoriesSet.Select(CategoriesSet.CategoryId).Where(CategoriesSet.CategoryName.Equal("分類00")) ) ); var sql=mql.ToDebugSQL(); var list=db.GetEntities<Products>(mql); } Watch.Stop(); Console.WriteLine("MoonTestQianTao:"+Watch.Elapsed); } private static void EFTestQianTao() { Watch.Restart(); var db = new TestContext(); db.Configuration.AutoDetectChangesEnabled=false; var list = db.Products.Where(m=>m.Category.CategoryName.Equals("分類00")).ToList(); db.Dispose(); Watch.Stop(); Console.WriteLine(" EFTestQianTao:"+Watch.Elapsed); } } }
執行文件下載地址
http://pan.baidu.com/s/1i3khc0H
先在sqlserver數據庫中建一個名為:TestContext
的數據庫,
您只需修改配置文件中的連接字符串
然后運行即可
以下為網友運行截圖