Benchmark (framework) Mode Cnt Score Error Units
BenchmarkRunner.query mybatis thrpt 10 66.269 ± 5.584 ops/ms
BenchmarkRunner.query jdbc thrpt 10 125.223 ± 6.476 ops/ms
BenchmarkRunner.query hibernate thrpt 10 57.952 ± 2.983 ops/ms
BenchmarkRunner.query objsql thrpt 10 85.329 ± 4.812 ops/ms
BenchmarkRunner.update mybatis thrpt 10 118.780 ± 6.028 ops/ms
BenchmarkRunner.update jdbc thrpt 10 184.414 ± 10.612 ops/ms
BenchmarkRunner.update hibernate thrpt 10 66.626 ± 1.556 ops/ms
BenchmarkRunner.update objsql thrpt 10 130.013 ± 2.718 ops/ms
其中 ops/ms 表示每毫秒完成的操作
无论是查询,还是更新,与 MyBatis 无法拉开较大的差距,但多次运行后,总是稳定的领先。ObjectiveSQL 在性能与易用性上相比其它 ORM 框架优势比较明显,编写的代码量上优势更加明显,希望大家多多体验,并能提交 issue,
https://github.com/braisdom/ObjectiveSql
(喜欢的朋友,给个 star,感谢)
1
wysnylc 2020-12-24 16:36:23 +08:00 2
我觉得是辣个蓝人秽土转生
|
2
taogen 2020-12-24 19:55:06 +08:00 via Android
没说过程,直接给结果?可复现吗?
|
3
buliugu 2020-12-24 21:54:16 +08:00
建议直接建一个 repo 放 Benchmark,发个图太 ppt 了不够硬核(逃
|
4
leonme 2020-12-24 22:05:24 +08:00 via iPhone
越接近原生 sql 性能越好,封装越深性能越差~很浅显而又试用的道理
|
5
shyangs 2020-12-24 22:36:37 +08:00
mybatis 3.5.6
hibernate 5.2.12.Final |
6
janus77 2020-12-24 22:49:16 +08:00
这里面应该只有 hibernate 算 orm 框架吧
|
7
Braisdom OP |
9
Braisdom OP |
10
ytmsdy 2020-12-25 09:20:00 +08:00
易用性越好,封装的越多,性能肯定下降。
越接近原生态,性能肯定越接近原生态。 但是我觉得吧,绝大部分网站还没有到达性能瓶颈。程序跑的慢,绝大部分是程序写的有问题。 |
11
noble4cc 2020-12-25 09:40:51 +08:00
这个 objsql 就是大佬你的作品吧,有点类似 jooq,之前脚本语言的框架很多都有这设计
|
12
Braisdom OP @noble4cc 是的,有点类似,前期参考过 Jooq,发现 Jooq 有好多地方做的不够好,所以自己才写了一个,主要是针对复杂 SQL 进行处理,同时也支持简单 SQL 的处理。
|
14
Foredoomed 2020-12-25 10:06:20 +08:00
像 jooq 这种框架不被大多数用户接受的根本原因在于代码生成的 sql 不会是最优的
|
15
Braisdom OP @Foredoomed 要理解 ObjectiveSQL 不是生成 SQL,而能用 Java 的语法写 SQL,你看到的 Java 代码几乎和 SQL 一模一样,是不是最优看你怎么写 Java 代码了。
Order.Table orderTable = Order.asTable(); Select select = new Select(); select.project(sum(orderTable.amount) / sum(orderTable.quantity) * 100) .from(orderTable) .where(orderTable.quantity > 30 && orderTable.salesAt.between("2020-10-10 00:00:00", "2020-10-30 23:59:59")) .groupBy(orderTable.productId); |
17
Braisdom OP @ytmsdy ORM 框架的选择是解决业务系统开发的易用性,而在大数据量插入时,可以手动拼接 SQL 的形式,不同场景不同的处理方式。
|
18
taogen 2020-12-25 11:00:16 +08:00
我认为 README 应该重点介绍
1. 我为什么要用。ObjectiveSQL 解决了用户什么痛点?为什么要从熟悉的框架转用 ObjectiveSQL ? ObjectiveSQL 真的方便很多吗,还是只是换了种写法而已。 2. 项目适不适合用。ObjectiveSQL 的优势是什么?在哪些场景有绝对优势? ObjectiveSQL 面向哪些目标用户?为什么要用 ObjectiveSQL ?我的项目适不适合用 ObjectiveSQL ? |