再论ORM性能(续)Moon.ORM4.1修订版发布

*测试代码如下
*/
using System;
using System.Configuration;
using System.Data.SqlClient;
using System.Linq;
using ClownFish;
using Dapper;
using Moon.Orm;
namespace TestFish
{
public class OrderInfo
{
public int OrderID { get; set; }
public DateTime OrderDate { get; set; }
public decimal SumMoney { get; set; }
public string Comment { get; set; }
public bool Finished { get; set; }
public int ProductID { get; set; }
public decimal UnitPrice { get; set; }
public int Quantity { get; set; }
public string ProductName { get; set; }
public int CategoryID { get; set; }
public string Unit { get; set; }
public string Remark { get; set; }
// 注意:客户信息有可能会是DBNull
public int? CustomerID { get; set; }
public string CustomerName { get; set; }
public string ContactName { get; set; }
public string Address { get; set; }
public string PostalCode { get; set; }
public string Tel { get; set; }
}
class Program
{
static void AppInit()
{
ConnectionStringSettings setting = ConfigurationManager.ConnectionStrings["MyNorthwind"];
ConnectionString = setting.ConnectionString;
// 配置 ClownFish
ClownFish.DbContext.RegisterDbConnectionInfo("default", setting.ProviderName, "@", setting.ConnectionString);
Type[] types = ClownFish.BuildManager.FindModelTypesFromCurrentApplication(x => x.Namespace == "TestFish");
ClownFish.BuildManager.CompileModelTypesSync(types, true);
// 配置 FishWebLib
FishWebLib.FishDbContext.Init(setting.ProviderName, "@", setting.ConnectionString);
}
public static SqlConnection GetSqlConnection()
{
var connection = new SqlConnection(ConfigurationManager.AppSettings["linkString"]);
connection.Open();
return connection;
}
protected static string ConnectionString;
private static ClownFish.DbContext db;
public static readonly string QueryText2 = @"
select top (1000) d.OrderID, d.OrderDate, d.SumMoney, d.Comment, d.Finished,
dt.ProductID, dt.UnitPrice, dt.Quantity,
p.ProductName, p.CategoryID, p.Unit, p.Remark,
c.CustomerID, c.CustomerName, c.ContactName, c.Address, c.PostalCode, c.Tel
from Orders d
inner join [Order Details] dt on d.OrderId = dt.OrderId
inner join Products p on dt.ProductId = p.ProductId
left join Customers c on d.CustomerId = c.CustomerId
";
public static void Main(string[] args)
{
//-------------这些可以不理会
var t1=DateTime.Now.Ticks;
AppInit();
db = new ClownFish.DbContext(false);
var parameter = new { TopN =1000 };
var list= ClownFish.DbHelper.FillList<OrderInfo>(
QueryText2, parameter, db, ClownFish.CommandKind.SqlTextWithParams);
var t2=DateTime.Now.Ticks;
Console.WriteLine(t2-t1);
var t3=DateTime.Now.Ticks;
var list2=DBFactory.GetEntities<OrderInfo>(QueryText2);
var t4=DateTime.Now.Ticks;
Console.WriteLine(t4-t3);
//--------------------------------------------------------------------------------------
//--------------------前面的可以不算,咱们正式开始
var tFish1=DateTime.Now.Ticks;
for (int i = 0; i < 2000; i++) {
var listFish= ClownFish.DbHelper.FillList<OrderInfo>(
QueryText2, null, db, ClownFish.CommandKind.SqlTextNoParams);
}
var tFish2=DateTime.Now.Ticks;
Console.WriteLine("小鱼的时间:"+(tFish2-tFish1));
var tMoon1=DateTime.Now.Ticks;
for (int i = 0; i < 2000; i++) {
var listMoon=DBFactory.GetEntities<OrderInfo>(QueryText2);
}
var tMoon2=DateTime.Now.Ticks;
Console.WriteLine("MOON的时间:"+(tMoon2-tMoon1));
SqlConnection connection = Program.GetSqlConnection();
var tRapper1=DateTime.Now.Ticks;
for (int i = 0; i < 2000; i++) {
var listRapper = connection.Query<OrderInfo>(QueryText2, null).ToList<OrderInfo>();
}
var tRapper2=DateTime.Now.Ticks;
Console.WriteLine("datarapper的时间:"+(tRapper2-tRapper1));
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
}
欢迎大家公测. /Files/humble/测试项目.zip
moon详情:
QQ群:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库