AdoNet vs LinqToSql vs NIntegrateQuery查询性能测试

STM32智能头盔DIY全攻略:从心率监测到跌倒报警的完整实现 本文提供了基于STM32的智能头盔完整DIY实现方案,涵盖从心率监测到跌倒报警的核心功能。详细解析了系统设计、硬件搭建、软件算法及系统联调,重点介绍了STM32主控、MAX30102心率传感器和MPU6050姿态传感器的应用,并分享了跌倒检测算法与功耗优化等实战经验,为嵌入式开发与物联网创新项目提供全面指导。 阅读详情

AdoNet vs LinqToSql vs NIntegrateQuery查询性能测试.

先上测试结果:

AdoNetTest: 267ms
AdoNetCachedCommandTest: 182ms
LinqToSqlTest: 3191ms
LinqToSqlCompiledQueryTest: 386ms
NIntegrateQueryTest: 266ms

下载

下载测试数据库:AdventureWorksLT2008

下载测试代码:NIntegrateQueryPerformanceComparison.zip

代码导航

AdoNetTest.cs

 

AdoNetCachedCommandTest.cs

 

LinqToSqlTest.cs

 

LinqToSqlCompiledQueryTest.cs


NIntegrateQueryTest.cs


测试结果分析

  1. 在不使用CompiledQuery的情况下,LinqToSql的性能比AdoNet差一个数量级,用百分比的话就是慢超过1000%;
  2. 在缓存Command的情况下,AdoNet的查询性能可以提高约30%;
  3. 在使用CompiledQuery的情况下,LinqToSql的查询性能比缓存Command的AdoNet下慢50%;
  4. NIntegrqateQuery的查询性能和不带缓存的AdoNet查询性能相当,比LinqToSqlCompiledQuery快约40%;

* 如对测试结果有任何异议,欢迎根跟贴友好讨论。

什么是NIntegrateQuery?

  1. NIntegrateQuery是Teddy最新开发的开源组件NIntegrate的一部分。
  2. NIntegrate是一个企业级系统集成开发框架。它的核心设计思想是,提供一个基于数据库集中化管理WCF服务配置信息和应用程序配置信息的方案,从而使得基于WCF的企业级SOA系统集成真正成为可能。
  3. NIntegrateQuery是一个类似Linq的强类型数据库查询语言。它的设计目标并不是ORM,也当然不是重新发明一个类似LinqToSql的轮子。它的设计目标是一个安全(完全防范SQL注入攻击)、高性能(参见测试结果),所有查询对象可以跨WCF、跨COM传递,并且支持动态查询条件、分页、排序的数据库查询语言。因为这个设计目标,它目前不支持,作为NIntegrate的一个组件,将来也没有计划支持类似LinqToSql提供的join、group by这样的查询。如果您要做这样的查询,标准的做法是先建一个View,再对View进行查询。
  4. 对于比较频繁的查询操作,虽然NIntegrateQuery本身的查询性能是非常好的,但是,如果可能,还是建议尽可能使用存储过程。
  5. 对于所有的写操作,虽然NIntegrateQuery提供了一个基于DataAdapter.Update的简单实现,但是,出于性能考虑,原则上,建议使用存储过程,当然,您也可以选择同时使用包括LinqToSql在内的任意其他ORM组件。

NIntegrateQuery支持的其它功能还包括:

  1. 混合支持多数据库、不同类型数据库的查询(正式版本将至少支持:SQL Server, Oracle, DB2和MySql)。
  2. 对不同的数据库,支持可扩展的,甚至是仅特定数据库支持的方法或语法。
  3. NIntegrate中包括了基于NIntegrateQuery的通用WCF查询服务的定义和默认实现,以及基于NIntegrateQuery和通用WCF查询服务的ASP.NET DataSource控件,方便进行数据绑定。

后记

这篇文章写完第一遍发布之前点预览时Firefox崩溃了,结果所有内容在Live Writer里老老实实重写了一遍,我哭~~~。为了避免同样的悲剧,我强烈建议您,千万不要在没有在其他地方备份前,在Firefox里点击FreeTextBox这个Rich Editor的“Preview”按钮。我是32bit Window Server 2008 + Firefox 3.0。切忌、切忌~~

 

//我是结尾符

 

Tag标签: soa nintegrate
Windows 本地 PostgreSQL 忘记 postgres 密码后,如何重置密码并给 root 用户最高权限 <think>我们只需要根据内容生成摘要,不超过150字。摘要应该简明扼要概括主要问题和解决步骤。注意是中文摘要。</think>在Windows本地开发中,因root数据库账号无CREATEDB权限且忘记postgres超级管理员密码,通过临时修改pg_hba.conf为trust认证重置密码,并重启PostgreSQL服务进行登录,最后授予root用户SUPERUSER等权限,完成数据库创建。 阅读详情

相关推荐

【BIM入门实战】Revit创建地形的几种方法及优缺点

Revit在体量和场地选项卡的【地形表面】工具可以创建三维地形,有三种方法:放置点、指定点文件和导入实例文件、倾斜摄影点云技术和InfraWorks地形生成。 文章目录1. 放置点2. 指定点文件3. 导入实例文件4. 倾斜摄影点云技术5. InfraWorks地形生成 1. 放置点 放置点功能位于体量和场地选项卡下地形表面,点开找到放置点,并通过自定义设置点的高程值来创建地形的高程数据。 优点:通过用户自定义高程点来绘制模型,使地形更为精确。 缺点:只适用于面积小的项目,面积太大,人工效率低下。 .

智慧空间实验室 4691

理解Design Pattern

<br />本文的目的是以最精炼的语言,理解什么是Design Pattern,为什么需要Design Pattern,和关于Design Pattern的争论。什么是Design Pattern?<br />从字面上理解,Pattern,指的是解决常见问题的可重用的方案。Design,则限定了,这里的Pattern是为软件的设计服务的。因此,所谓Design Pattern,指的是解决常见的软件设计问题的可重用的方案,或者说解决方案的模板。<br /> <br />两点需要特别注意的是:算法不是Desig

Teddy's Knowledge Base 4794

(自主整理)地级市-银行网点数据数据集.xlsx

2007-2022年

C#2.0 - Object Pool 简单实现

本文介绍本人的一个简单Object Pool实现。什么是Object Pool呢?大家可能都知道什么是数据库连接池,他能极大避免不需要的对象销毁和初始化开销。本文实现的对象池是一个通用的可用于任何有实例化接口的对象的池。默认的对象的实例化接口是new,文中也演示了如果您的对象需要从一个Factory构造,或当你的对象是用Emit生成时,如何简单继承ObjectPool类,实现特殊的对象的

Teddy's Knowledge Base 1365

Enterprise WCF - Integrate WCF Configuration into Your Enterprise Framework

Background Lots of people declares they are using WCF in their “enterprise” distributed software development together with other SOA technologies, and even calls their software architecture WCF b

Teddy's Knowledge Base 1213

讨论:WCF可序列化的ActiveRecord实现有意义吗?

<br />本文的目的,是探讨WCF可序列化的ActiveRecord实现是否有意义。ActiveRecord模式简介<br />ActiveRecord模式是Martin Fowler的企业应用架构模式中提到的一种数据访问模式,如下图:<br /><br />Person类包含lastName, firstName等这些属性,一个Person类的实例,对应数据库的一个Person表或视图的一条记录,每一个属性,对应数据库记录的一个字段;同时,Person类包含CRUD方法,封装了对数据库的操作;Perso

Teddy's Knowledge Base 1201

理解单元测试(Unit Testing)

<br />本文的目的是以最精炼的语言,正解什么是单元测试,为什么要单元测试,和如何进行单元测试。 什么是单元测试(Unit Testing)?<br />测试(Testing)这个词很容易理解,那么什么是单元(Unit)呢?一个单元指的是应用程序中可测试的最小的一组源代码。一组源代码可测试,一般要求其有明确的输入和输出。因此,一般来讲,源代码中包含明确的输入和输出的每一个方法被认为是一个可测试的单元。注意,这里指的输出,并不局限于方法的返回值或对输入参数的改变,而包括了方法的执行过程中,改变的任何数据。为

Teddy's Knowledge Base 1196

提前发布4/25上海俱乐部活动演讲“集中化WCF服务配置管理”示例程序

承蒙4/25上海俱乐部活动组织团队邀请,本人有幸将在本次活动中和大家分享一下“集中化WCF服务配置管理”方面的一些探索。为了让大家对活动当天我讲的话题提前有一个更直观的了解,在这里提前介绍一下到时我会演示的示例程序。 本示例程序具体演示如下内容: 1) 基于SQL Server数据库的集中化WCF服务配置管理; 2) 集中化ConnectingString管理; 3) 集中化App

Teddy's Knowledge Base 1001

来一点反射,再来一点Emit —— 极度简化Entity!

在前一篇文章《没有ORM或代码生成数据就不能持久化了? - 用范型技术代替代码生成!》中,Teddy尝试运用泛型极大简化了一个轻量级持久化框架对代码生成的依赖,并且为了保证性能,整个持久化组件没有使用反射。在本文中,Teddy将在保证性能的基础上,加一点反射和加一点Emit,从而进一步简化Entity的定义和使用,当然也就进一步降低了组件对传统代码生成的依赖。读者可以对比前文阅读本文,看

Teddy's Knowledge Base 958

Apply SOA Design Patterns with WCF (5) WCF Based ASP.NET DataSouce Control (基于WCF的数据源控件)

Original (原创) by Teddy’s Knowledge Base Content (目录) (1) WCF Configuration Centralization (WCF配置集中管理) (2) WCF Automatic Deployment (WCF自动化部署) (3) WCF Automatic Service Locating (WCF自动化服务定位) (4)

Teddy's Knowledge Base 948

Web Application Architectures: Simple 2 Layer, Standard 3 Layer and Distributed 3 Layer

Abstract:This article discusses three common web application architectures: Simple 2 Layer, Standard 3 Layer and Distributed 3 Layer. For each architecture, it gives an ASP.NET 2.0 sample imple

Teddy's Knowledge Base 921

ORM中的继承关系映射全解——单表继承体系、一实体一具体表、一实体一扩展表、接口映射

实体继承是基于OO和关系型数据库软件系统设计中的一个重要主题。本文通过基于NBear的实例解析ORM中的实体继承体系映射的方方面面。本文涉及的内容包括:1. 单表继承体系2. 一实体一具体表3. 一实体一扩展表4. 接口实现映射vs基类继承映射1. 单表继承体系所谓单表继承体系就是用一张数据库表存储整个继承体系中的所有实体的数据。单表继承体系适合那种继承体系中实体数目相对较少,总记录

Teddy's Knowledge Base 896

发布NBearLite中文版完全参考手册 + NBearLite 10分钟入门教程 + NBearLite v1.0.0.7 beta

NBearLite是一个.NET 2.0开源(BSD协议)通用数据访问组件,支持SQL Server、Oracle、MS Access,MySQLSQLite,PostgreSQL等多种数据库的透明切换(改变数据库类型时无需修改具体的查询代码)。NBearLite实现了一套类似LINQ的强类型数据库查询语法(支持从简单的CRUD查询到GroupBy、InnerJoin,Paging,S

Teddy's Knowledge Base 891

用自定义KeyValueCollection类代替Dictionary/Hastable,改善简化后的Entity性能

在上一篇《来一点反射,再来一点Emit —— 极度简化Entity!》中,Teddy运用反射和Emit极度简化了Entity的定义方式。本文将在上文的基础上,用自定义KeyValueCollection类代替原来的Dictionary类承载Entity的数据,从而改善Entity的读写性能,并保持Dictionary的方便的使用接口。为什么Dictionary的性能不好?当然,这里说的性

Teddy's Knowledge Base 873

ASP.Net 2.0 - 使用Ilungasoft Framework加速Web开发

Ilungasoft Framework是Teddy正在开发中的Web快速开发框架,该框架基于.Net 2.0,设计的出发点就是易用性,快速开发,兼顾性能。同时,Ilungasoft Framework也充分利用了许多.Net 2.0中的新特性以简化框架的易用性。本文将以一个Sample Web应用的分析为基础,介绍Ilungasoft Framework的使用。在本文中,您将看到,Il

Teddy's Knowledge Base 838

正解TDD

<br />本文的目的是以最精炼的语言,正解什么是TDD,为什么要TDD,和TDD的难点。 <br />什么是TDD? 简单的说,TDD = 测试先行(TFD, Test First Development) + 重构(Refactoring) + 回归测试(Regression Test)。<br /><br /><br />如果要实现某个功能,TDD要求在初步定义完这个功能的外部接口之后,先根据这个功能的用例写测试代码(黑盒测试),测试代码检验的是这个功能的外部接口的使用场景,而非具体的实现细节。然后,

Teddy's Knowledge Base 836

Apply SOA Design Patterns with WCF (2) WCF Automatic Deployment (自动化部署)

Original (原创) by Teddy’s Knowledge Base Content (目录) (1) WCF Configuration Centralization (WCF配置集中管理) (2) WCF Automatic Deployment (WCF自动化部署) (3) WCF Automatic Service Locating (WCF自动化服务定位) (4)

Teddy's Knowledge Base 827

Java开源在线考试系统怎么选?从技术选型到落地部署的完整指南

Java开源在线考试系统怎么选?本文从技术选型、核心功能、部署运维、二次开发等维度,梳理了Java开源在线考试系统的选型要点。

麦塔在线考试培训系统 351

中小企业出海上云:一次服务器选型踩坑记录

这次踩坑的本质,是用单机思维运营海外业务:区域凭地理直觉,弹性当临时动作,规格只看计算资源,安全与售后留到出事后才想。迁移执行:数据迁移走全量导出、增量同步、短停切换三步,先全量逻辑导出导入并核对行数与关键字段,再追增量,两边延迟归零后选低谷窗口把源库置为只读,完成末次增量并切换写流量。两条链路都不稳定,说明问题不在个别运营商,而在区域选址本身。2026 年上半年开始做周期性促销,并接入当地支付网关的订单回传后,流量结构与调用链都变了,单机方案开始连续出问题,于是有了这次从排查、重新选型到迁移落地的记录。

2601_94912732的博客 354

商超智能运营如何落地?从系统架构到实战避坑的完整技术路径

3. **多端交互展示层**:需覆盖顾客使用的**小程序、APP及H5公众号**,以及员工使用的管理后台。答:在应用层引入**适配器模式**。在项目启动时,应强制要求供应商或自研团队产出**部署文档**(含环境变量清单)和**二次开发文档**(含核心流程时序图),确保后续维护不受限于个人。- **多租户插件**:MyBatis Plus的`TenantLineInnerInterceptor`可实现SQL层面的自动拼接`store_id`条件,防止开发者因SQL编写疏漏导致的数据越权。

weixin_56812938的博客 536

Oracle迁移到PostgreSQL数据库-FGOracle2PG工具

FGOracle2PG 是一款高性能、高可靠的 Oracle 数据库到 PostgreSQL 数据库迁移工具。它由风哥基于多年数据库运维与迁移实战经验开发。工具采用纯 Python 实现,支持命令行(CLI)与可视化 Web 控制台两种操作方式,能够覆盖从开发测试到生产环境的全场景数据库迁移需求。

风哥oracle/mysql/pg技术教程 192
上一篇: 提前发布4/25上海俱乐部活动演讲&ldquo;集中化WCF服务配置管理&rdquo;示例程序
下一篇: NIntegrate近期动态08/06
teddyma
博客等级 码龄25年 5粉丝 187原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值