diff --git a/Src/Asp.Net/PerformanceTest/App.config b/Src/Asp.Net/PerformanceTest/App.config index 88fa4027b..a9b16ce50 100644 --- a/Src/Asp.Net/PerformanceTest/App.config +++ b/Src/Asp.Net/PerformanceTest/App.config @@ -1,6 +1,20 @@ - + - - - + + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/Src/Asp.Net/PerformanceTest/Common/OrmType.cs b/Src/Asp.Net/PerformanceTest/Common/OrmType.cs index 4199a0e02..b471d3577 100644 --- a/Src/Asp.Net/PerformanceTest/Common/OrmType.cs +++ b/Src/Asp.Net/PerformanceTest/Common/OrmType.cs @@ -9,6 +9,7 @@ namespace PerformanceTest public enum OrmType { SqlSugar, - Dapper + Dapper, + EF } } diff --git a/Src/Asp.Net/PerformanceTest/Models/TestEntity.cs b/Src/Asp.Net/PerformanceTest/Models/TestEntity.cs index 936e2b82b..3e2587779 100644 --- a/Src/Asp.Net/PerformanceTest/Models/TestEntity.cs +++ b/Src/Asp.Net/PerformanceTest/Models/TestEntity.cs @@ -1,9 +1,10 @@ using System; using System.Collections.Generic; +using System.Data.Entity; +using System.Data.Entity.ModelConfiguration.Conventions; using System.Linq; using System.Text; using System.Threading.Tasks; - namespace PerformanceTest { [Dapper.Contrib.Extensions.Table("Test")] @@ -23,4 +24,16 @@ namespace PerformanceTest public Guid? F_Guid { get; set; } public string F_String { get; set; } } + + public class EFContext : DbContext + { + public EFContext(string connectionString) : base(connectionString) { + + } + public DbSet TestList { get; set; } + protected override void OnModelCreating(DbModelBuilder modelBuilder) + { + modelBuilder.Entity().ToTable("Test"); + } + } } diff --git a/Src/Asp.Net/PerformanceTest/PerformanceTest.csproj b/Src/Asp.Net/PerformanceTest/PerformanceTest.csproj index df6247265..e256d5502 100644 --- a/Src/Asp.Net/PerformanceTest/PerformanceTest.csproj +++ b/Src/Asp.Net/PerformanceTest/PerformanceTest.csproj @@ -41,10 +41,19 @@ ..\packages\Dapper.Contrib.1.50.0\lib\net45\Dapper.Contrib.dll True + + ..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll + True + + + ..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.SqlServer.dll + True + ..\SqliteTest\OtherDll\SyntacticSugar.dll + diff --git a/Src/Asp.Net/PerformanceTest/Program.cs b/Src/Asp.Net/PerformanceTest/Program.cs index f941a969a..1c9ce18ff 100644 --- a/Src/Asp.Net/PerformanceTest/Program.cs +++ b/Src/Asp.Net/PerformanceTest/Program.cs @@ -15,8 +15,8 @@ namespace PerformanceTest /// static void Main(string[] args) { - //new TestGetAll().Init(OrmType.SqlSugar); - // new TestGetById().Init(OrmType.SqlSugar); + //new TestGetAll().Init(OrmType.Dapper); + //new TestGetById().Init(OrmType.EF); new TestSql().Init(OrmType.SqlSugar); Console.ReadKey(); } diff --git a/Src/Asp.Net/PerformanceTest/TestItems/TestGetAll.cs b/Src/Asp.Net/PerformanceTest/TestItems/TestGetAll.cs index 5be88d3ef..f9e65acf9 100644 --- a/Src/Asp.Net/PerformanceTest/TestItems/TestGetAll.cs +++ b/Src/Asp.Net/PerformanceTest/TestItems/TestGetAll.cs @@ -6,6 +6,7 @@ using System.Data.SqlClient; using Dapper; using SqlSugar; using Dapper.Contrib.Extensions; +using System.Data.Entity; namespace PerformanceTest.TestItems { @@ -13,6 +14,7 @@ namespace PerformanceTest.TestItems { public void Init(OrmType type) { + Database.SetInitializer(null); Console.WriteLine("测试一次读取100万条数据的速度"); var eachCount = 1; @@ -27,6 +29,9 @@ namespace PerformanceTest.TestItems case OrmType.Dapper: Dapper(eachCount); break; + case OrmType.EF: + EF(eachCount); + break; default: break; } @@ -63,5 +68,19 @@ namespace PerformanceTest.TestItems } }); } + + private static void EF(int eachCount) + { + GC.Collect();//回收资源 + System.Threading.Thread.Sleep(1);//休息1秒 + + PerHelper.Execute(eachCount, "EF", () => + { + using (EFContext conn = new EFContext(Config.connectionString)) + { + var list = conn.TestList.AsNoTracking().ToList(); + } + }); + } } } diff --git a/Src/Asp.Net/PerformanceTest/TestItems/TestGetById.cs b/Src/Asp.Net/PerformanceTest/TestItems/TestGetById.cs index b2f3edb43..07e03b030 100644 --- a/Src/Asp.Net/PerformanceTest/TestItems/TestGetById.cs +++ b/Src/Asp.Net/PerformanceTest/TestItems/TestGetById.cs @@ -2,6 +2,7 @@ using SqlSugar; using System; using System.Collections.Generic; +using System.Data.Entity; using System.Data.SqlClient; using System.Linq; using System.Text; @@ -14,6 +15,7 @@ namespace PerformanceTest.TestItems public void Init(OrmType type) { + Database.SetInitializer(null); Console.WriteLine("测试一次读取1条数据的速度"); var eachCount = 1000; @@ -28,6 +30,9 @@ namespace PerformanceTest.TestItems case OrmType.Dapper: Dapper(eachCount); break; + case OrmType.EF: + EF(eachCount); + break; default: break; } @@ -63,5 +68,20 @@ namespace PerformanceTest.TestItems } }); } + + + private static void EF(int eachCount) + { + GC.Collect();//回收资源 + System.Threading.Thread.Sleep(1);//休息1秒 + + PerHelper.Execute(eachCount, "EF", () => + { + using (EFContext conn = new EFContext(Config.connectionString)) + { + var list = conn.TestList.AsNoTracking().Single(it=>it.Id==1); + } + }); + } } } diff --git a/Src/Asp.Net/PerformanceTest/TestItems/TestSql.cs b/Src/Asp.Net/PerformanceTest/TestItems/TestSql.cs index 6e60b6b17..e59dca590 100644 --- a/Src/Asp.Net/PerformanceTest/TestItems/TestSql.cs +++ b/Src/Asp.Net/PerformanceTest/TestItems/TestSql.cs @@ -2,6 +2,7 @@ using SqlSugar; using System; using System.Collections.Generic; +using System.Data.Entity; using System.Data.SqlClient; using System.Linq; using System.Text; @@ -13,6 +14,7 @@ namespace PerformanceTest.TestItems { public void Init(OrmType type) { + Database.SetInitializer(null); Console.WriteLine("测试SQL查询的速度"); var eachCount = 3000; @@ -27,6 +29,9 @@ namespace PerformanceTest.TestItems case OrmType.Dapper: Dapper(eachCount); break; + case OrmType.EF: + EF(eachCount); + break; } } Console.Write("总计:" + (DateTime.Now - beginDate).TotalMilliseconds / 1000.0); @@ -59,5 +64,19 @@ namespace PerformanceTest.TestItems } }); } + + private static void EF(int eachCount) + { + GC.Collect();//回收资源 + System.Threading.Thread.Sleep(1);//休息1秒 + + PerHelper.Execute(eachCount, "EF", () => + { + using (EFContext conn = new EFContext(Config.connectionString)) + { + var list = conn.Database.SqlQuery("select top 10 * from Test").ToList(); + } + }); + } } }