Moon.Orm性能報告


以下為有網友公司的評估測試及使用規范

大家可以下載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
的數據庫,
您只需修改配置文件中的連接字符串
然后運行即可

 以下為網友運行截圖

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM