【比较mybatis、lazy、sqltoy、mybatis-flex、easy-query】(三)
orm框架使用性能比较
比较mybatis、lazy、sqltoy、mybatis-flex、easy-query操作数据
环境:
idea jdk17 spring boot 3.0.7 mysql 8.0
测试条件常规对象
orm 框架 | 是否支持xml | 是否支持 Lambda | 对比版本 |
---|---|---|---|
mybatis | ☑️ | ☑️ | 3.5.4 |
sqltoy | ☑️ | ☑️ | 5.2.98 |
lazy | ✖️ | ☑️ | 1.2.4-JDK17-SNAPSHOT |
mybatis-flex | ☑️ | ☑️ | 1.8.0 |
easy-query | ✖️ | ☑️ | 1.10.31 |
数据库表(含有唯一性索引s_u)
CREATE TABLE `sys_user` ( `column_name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '额外字段', `create_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间', `id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID', `is_deleted` tinyint(1) DEFAULT NULL COMMENT 'null', `password` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '密码', `scope` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'null', `status` tinyint(1) DEFAULT NULL COMMENT '状态', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `username` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '用户名', PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `s_u` (`scope`,`username`) ) ENGINE=InnoDB AUTO_INCREMENT=9223371632070323791 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
比较方法:增加、修改、删除、分页查询(当前项目暂时只比较批量新增和分页)
项目设计
-
声明 ORMRepository 接口提供对应增删改查方法
-
-
声明 ORMComparisonRepository接口 继承 ORMRepository 下游由不同ORM实现
-
声明 SysUserRepository 接口 继承 ORMRepository 用于循环调用不同orm实现方法执行方法测试产生测试结果
-
声明抽象类 SysUserRepositoryAbstractRecord 继承 ORMComparisonRepository 并且提供对应的框架执行结果存储
-
-
不同ORM框架mybatis、sqltoy、Lazy、easy-query 创建 ORMComparisonRepository 的实现
-
-
不同 ORM 操作数据的实现在
测试条件 批量插入数据 10、100、1000、10000、100000 ,分页查询数据 10、100、1000、10000、100000
项目启动后使用浏览器打开 http://localhost:1003/sys/user/run-compare
测试条件(细节比较) 批量插入数据 1~10000,分页查询数据 1~10000
项目启动后使用浏览器打开 http://localhost:1003/sys/user/run-particulars-compare
测试执行过程
清空需要插入表中所有数据 通过三种ORM框架进行数据批量新增、而后进行分页查询,记录消耗时间,输出md文档
查看结果曲线图
测试结果(结果只提供参考)
MYBATIS_FLEX(batchStory) | 影响行数:10 | 影响行数:100 | 影响行数:1000 | 影响行数:10000 | 影响行数:100000 |
---|---|---|---|---|---|
执行时间: | 3毫秒 | 11毫秒 | 61毫秒 | 633毫秒 | 6985毫秒 |
MYBATIS(batchStory) | 影响行数:10 | 影响行数:100 | 影响行数:1000 | 影响行数:10000 | 影响行数:100000 |
---|---|---|---|---|---|
执行时间: | 6毫秒 | 8毫秒 | 59毫秒 | 733毫秒 | 7136毫秒 |
LAZY(batchStory) | 影响行数:10 | 影响行数:100 | 影响行数:1000 | 影响行数:10000 | 影响行数:100000 |
---|---|---|---|---|---|
执行时间: | 8毫秒 | 9毫秒 | 39毫秒 | 385毫秒 | 3987毫秒 |
EASY_QUERY(batchStory) | 影响行数:10 | 影响行数:100 | 影响行数:1000 | 影响行数:10000 | 影响行数:100000 |
---|---|---|---|---|---|
执行时间: | 31毫秒 | 57毫秒 | 311毫秒 | 1956毫秒 | 20898毫秒 |
SQLTOY(batchStory) | 影响行数:10 | 影响行数:100 | 影响行数:1000 | 影响行数:10000 | 影响行数:100000 |
---|---|---|---|---|---|
执行时间: | 8毫秒 | 26毫秒 | 183毫秒 | 1610毫秒 | 18832毫秒 |
MYBATIS_FLEX(findPage) | 影响行数:10 | 影响行数:100 | 影响行数:1000 | 影响行数:10000 | 影响行数:100000 |
---|---|---|---|---|---|
执行时间: | 10毫秒 | 19毫秒 | 30毫秒 | 100毫秒 | 668毫秒 |
MYBATIS(findPage) | 影响行数:10 | 影响行数:100 | 影响行数:1000 | 影响行数:10000 | 影响行数:100000 |
---|---|---|---|---|---|
执行时间: | 1231毫秒 | 888毫秒 | 1114毫秒 | 819毫秒 | 838毫秒 |
LAZY(findPage) | 影响行数:10 | 影响行数:100 | 影响行数:1000 | 影响行数:10000 | 影响行数:100000 |
---|---|---|---|---|---|
执行时间: | 8毫秒 | 7毫秒 | 17毫秒 | 196毫秒 | 675毫秒 |
EASY_QUERY(findPage) | 影响行数:10 | 影响行数:100 | 影响行数:1000 | 影响行数:10000 | 影响行数:100000 |
---|---|---|---|---|---|
执行时间: | 15毫秒 | 5毫秒 | 18毫秒 | 96毫秒 | 638毫秒 |
SQLTOY(findPage) | 影响行数:10 | 影响行数:100 | 影响行数:1000 | 影响行数:10000 | 影响行数:100000 |
---|---|---|---|---|---|
执行时间: | 36毫秒 | 35毫秒 | 37毫秒 | 86毫秒 | 229毫秒 |
写在最后
细节数据对比(一万以内基本相差不大)
批量保存:
- 一万条数据以内 性能由高到低 mybatis-flex 、mybatis、lazy 性能趋于一致 sqltoy、easy-query 耗时出现明显起伏
- 十万数据时,处理时间由快到慢依次是: lazy、mybatis、mybatis-flex、easy-query、sqltoy
分页查询:
- 一万条数据以内 性能由高到低 lazy、mybatis-flex 、sqltoy、easy-query、mybatis
- 十万数据时,处理时间由快到慢依次是: sqltoy、lazy、mybatis-flex、easy-query、mybatis
快速数据对比
当前项目地址
lazy-orm地址
mybatis地址
sqltoy地址
mybatis-flex地址
easy-query地址

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
官宣!知名 IaC 工具 Crossplane 宣布 KCL 登陆其官方函数市场!
内容转载整理自 Crossplane 官网博客原文:https://blog.crossplane.io/function-kcl 内容简介 自 Crossplane v1.14 中的组合函数 Beta 版发布以来,使用 Crossplane 构建云原生平台的可能体验范围一直在迅速扩大。KCL 团队在第一时间进行跟进并主动构建了一个可重用的函数,整个 Crossplane 生态系统现在可以利用 KCL 提供的高水平经验和能力来构建自己的云原生平台。 同时 Crossplane 宣布 KCL 函数成为第一个发布到 Upbound 市场的第三方函数组件,地址为https://marketplace.upbound.io/providers/crossplane-contrib/function-kcl 。源代码可以在https://github.com/crossplane-contrib/function-kcl找到,欢迎贡献和反馈。 您可以通过使用以下一行命令安装 function-kcl 并开始在整个 Crossplane 控制平面中使用: crossplanexpkginsta...
- 下一篇
RWKV-6-Finch 3B 模型于 2 月 29 日开源
2024 年 2 月 29 日,经过密集的精心训练与严格的测试验证,RWKV 开源基金会宣布其划时代的 RWKV-6-Finch 3B 模型正式向全球开源。 本次开源的 RWKV-6-Finch 3B 模型,为 RWKV 第六代架构中的 3B 参数级大型语言模型。与前代 RWKV-5 相比较,RWKV-6 不仅在多语言处理能力上实现了革命性的飞跃,其在角色扮演等领域的表现也格外出色,显著超越以往所有模型。 图:RWKV-6-Finch 3B 扮演一位炼金术士 迭代后的 RWKV-6 已在效果、计算效率、能耗上领先于 Transformer 同参数模型,彰显了其领先技术的卓越成就。 我们将继续在 World-2.1(1.4T)上训练 RWKV-6 模型,以提高性能。更加强大的 RWKV-6.1 版本将于两个月后面世,期待与大家共同见证。 评测数据 本次评测涵盖了 14 款接近 3B 参数规模的开源大语言模型,其中不乏 RWKV 系列中的前代佳作,如 RWKV-4 和 RWKV-5。 其中,英语的性能测试将通过 12 个独立的基准测试来衡量大模型在常识推理和世界知识等英语内容上的表现。而多...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8安装Docker,最新的服务器搭配容器使用