mirror of
https://github.com/dotnetcore/FreeSql.git
synced 2026-02-03 23:10:54 +08:00
update
58
性能.md
58
性能.md
@@ -1,6 +1,60 @@
|
||||
FreeSql实现了强大功能的同时,性能没有受到影响,项目中使用反射或耗时的操作都经过了缓存处理。读取数据部分采用了ExpressionTree,使得FreeSql解析实体数据的速度与Dapper非常接近。
|
||||
|
||||
## 测试代码
|
||||
# 插入测试
|
||||
|
||||
### 测试结果(52个字段)
|
||||
|
||||
| | 18W+52C | 1W+52C | 5K+52C | 2K+52C | 1K+52C | 500+52C | 100+52C | 50+52C |
|
||||
| -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
|
||||
| MySql 5.5 ExecuteAffrows | 55,497ms | 4,953ms | 2,304ms | 2,554ms | 1,516ms | 1,572ms | 265ms | 184ms |
|
||||
| SqlServer Express ExecuteAffrows | 402,355ms | 24,847ms | 11,465ms | 4,971ms | 2,437ms | 915ms | 138ms | 88ms |
|
||||
| SqlServer Express ExecuteSqlBulkCopy | 21,065ms | 578ms | 326ms | 139ms | 105ms | 79ms | 60ms | 48ms |
|
||||
| PostgreSQL 10 ExecuteAffrows | 46,756ms | 3,294ms | 2,269ms | 1,019ms | 374ms | 209ms | 51ms | 37ms |
|
||||
| PostgreSQL 10 ExecutePgCopy | 10,090ms | 583ms | 337ms | 136ms | 88ms | 61ms | 30ms | 25ms |
|
||||
| Oracle XE ExecuteAffrows | - | - | - | - | 24,528 | 10,648ms | 571ms | 200ms |
|
||||
| Sqlite ExecuteAffrows | 28,554ms | 1,149ms | 701ms | 327ms | 155ms | 91ms | 44ms | 35ms |
|
||||
|
||||
> 18W+52C 解释:插入18万行记录,表字段有52个
|
||||
|
||||
> Oracle 插入性能不用怀疑,可能安装学生版限制较大
|
||||
|
||||
提醒:开源数据库测试结果比较有意义,商业数据库版本之间性能可能有较大差距
|
||||
|
||||
### 测试结果(10个字段)
|
||||
|
||||
| | 18W+10C | 1W+10C | 5K+10C | 2K+10C | 1K+10C | 500+10C | 100+10C | 50+10C |
|
||||
| -- | -- | -- | -- | -- | -- | -- | -- | -- |
|
||||
| MySql 5.5 ExecuteAffrows | 15,380ms | 1,813ms | 1,457ms | 1,254ms | 563ms | 246ms | 55ms | 21ms |
|
||||
| SqlServer Express ExecuteAffrows | 47,204ms | 2,275ms | 1,108ms | 488ms | 279ms | 123ms | 35ms | 16ms |
|
||||
| SqlServer Express ExecuteSqlBulkCopy | 4,248ms | 127ms | 71ms | 30ms | 48ms | 14ms | 11ms | 10ms |
|
||||
| PostgreSQL 10 ExecuteAffrows | 9,786ms | 568ms | 336ms | 157ms | 102ms | 34ms | 9ms | 6ms |
|
||||
| PostgreSQL 10 ExecutePgCopy | 4,081ms | 167ms | 93ms | 39ms | 21ms | 12ms | 4ms | 2ms |
|
||||
| Oracle XE ExecuteAffrows | - | - | - | - | 2,394 | 731ms | 67ms | 33ms |
|
||||
| Sqlite ExecuteAffrows | 4,524ms | 246ms | 137ms | 94ms | 35ms | 19ms | 14ms | 11ms |
|
||||
|
||||
> 测试结果,是在相同操作系统下进行的,并且都有预热
|
||||
|
||||
```csharp
|
||||
public class TestInsert10c
|
||||
{
|
||||
[Column(MapType = typeof(string))]
|
||||
public Guid Id { get; set; }
|
||||
|
||||
public string UserName0 { get; set; }
|
||||
public string PassWord0 { get; set; }
|
||||
public DateTime CreateTime0 { get; set; }
|
||||
|
||||
public string UserName1 { get; set; }
|
||||
public string PassWord1 { get; set; }
|
||||
public DateTime CreateTime1 { get; set; }
|
||||
|
||||
public string UserName2 { get; set; }
|
||||
public string PassWord2 { get; set; }
|
||||
public DateTime CreateTime2 { get; set; }
|
||||
}
|
||||
```
|
||||
|
||||
# 查询测试
|
||||
|
||||
```csharp
|
||||
IFreeSql mysql = new FreeSql.FreeSqlBuilder()
|
||||
@@ -21,7 +75,7 @@ class Song {
|
||||
|
||||
测试方法:运行两次,以第二次性能报告,避免了首个运行慢不公平的情况。
|
||||
|
||||
## 测试结果
|
||||
### 测试结果
|
||||
|
||||
| | 数量 | Query\<Class\> | Query\<Tuple\> | Query\<dynamic\> |
|
||||
| - | - | - | - | - |
|
||||
|
||||
1
更新日志.md
1
更新日志.md
@@ -16,6 +16,7 @@
|
||||
- 增加 IInsert/IUpdate BatchOptions 方法指定批量插入的设置;
|
||||
- 增加 IInsert.ToDataTable 方法,为 BulkCopy 操作提供数据,该方法处理了(表名、字段名、类型)映射和忽略列;
|
||||
- 增加 IInsert.ExecuteSqlBulkCopy 扩展方法执行 SqlBulkCopy 批量插入,在 FreeSql.Provider.SqlServer 可用;
|
||||
- 增加 IInsert.ExecutePgCopy 扩展方法执行 PostgreSQL Copy 批量导入,在 FreeSql.Provider.PostgreSQL 可用;
|
||||
|
||||
## v0.12.21
|
||||
|
||||
|
||||
Reference in New Issue
Block a user