ORM性能:greenDAO比ORMLite快吗?

Dan*_*n J 31 sqlite performance android ormlite greendao

我一直在我的应用程序中使用ORMLite,我正在考虑是否转向greenDAO.

性能是该决定的重要组成部分,greenDAO的功能页面说:

对于相同的给定实体,greenDAO插入和更新实体的速度提高了2倍,并且加载实体的速度比ORMLite快4.5倍.
...
(图表和图表更新于10-23-2011)

我认为ORMLite的配置文件生成步骤应该在运行时不需要反射.

ORMLite changlog表明greenDAO基准测试是在配置文件功能发布后完成的,但是greenDAO功能页面没有明确说明是否为测试生成了静态配置文件.

4.26:9/26/2011(svn r1978)
*ANDROID:添加了字段配置实用程序,以避免带注释的Dao创建性能问题.

从那以后,也有ORMLite性能修复,例如

4.40:4/16/2012(svn r2516)
*ANDROID:创建DAO时出现大的性能错误修复.外部字段总是使用反射而不是表格配置.

谁能确认greenDAO和ORMLite之间是否仍有很大的性能差异?谢谢!

Dan*_*n J 64

我们刚刚发布了一个Github项目,我们用它来比较ORMLite和GreenDao与原始SQLite的性能:https:
//github.com/daj/android-orm-b​​enchmark

该项目还允许您比较内存数据库和磁盘数据库的性能.

标题结果是:

GreenDao是多比ORMLite更快.大致是:

  • 写入大量对象的速度提高了3倍.
  • 在单个表中的所有10000个条目中读取速度提高50%.
  • 在索引读取单行时速度提高2倍到3倍(尽管两者都非常快).
  • 在LIKE搜索10000条目表中的100条记录时,速度快15倍.

该项目包含一个天真的原始SQLite基准测试和一个优化的SQLite基准测试.

GreenDao vs un优化的原始SQLite

  • GreenDao的写入基准速度快了2倍.
  • GreenDao读取基准测试的速度慢了25%.

GreenDao vs优化原始SQLite

  • GreenDao的读写基准测试速度慢了50%.

有关详细结果,请参阅上面的Github存储库.

当然,我们的基准测试代码中可能存在错误...如果您发现任何请分叉,修复并提交拉取请求!:-)

免责声明:在选择GreenDao而不是ORMLite之前,请确保您自己进行研究.

  • 我用基准测试进行了一些测试.它与读者的1-Many关联使得这种情况变得缓慢.当你剥离它时,读数大约是2倍,虽然我需要真正玩这个以确认.我必须查看ormlite正在对关联做什么,但它设置为eager = true,这意味着它抓取每一行的所有数据.绿色dao测试和sql测试不是这样做的,所以它不公平比较.完全披露,为了它的价值,我做了很好的原始ormlite端口为Android.但是,没有什么是核心的,所以我需要做一些挖掘. (4认同)
  • 不,但随意分叉项目并添加一个:-) (3认同)
  • 试图编辑,但没时间.我做了一些调整,最后一次测试表明,读取和写入在ormlite上比绿色慢50%.50%是显着的,但它远不及绿色时间的1200%.我在这里分配了基准:https://github.com/touchlab/android-orm-b​​enchmark我将要做更多的测试,我也在为ormlite开发一个预编译的查询工具.它是一个很好的包,但有些东西可以改进.即使eager设置为false,查询也很慢.那种事. (2认同)