web-dev-qa-db-fra.com

Performances ORM: greenDAO est-il plus rapide qu'ORMLite?

J'utilise ORMLite dans mon application et je me demandais s'il fallait passer à greenDAO.

Les performances sont une partie énorme de cette décision, et page des fonctionnalités de greenDAO dit:

Pour la même entité donnée, greenDAO insère et met à jour les entités 2 fois plus rapidement et charge les entités 4,5 fois plus rapidement pour le chargement des entités que ORMLite.
...
(Figures et graphique mis à jour le 10-23-2011)

Je pensais la génération du fichier de configuration d'ORMLite étape devrait supprimer le besoin de réflexion lors de l'exécution.

L'ORMLite changlog suggère que le benchmark greenDAO a été fait après la sortie de la fonctionnalité de fichier de configuration, mais la page des fonctionnalités de greenDAO ne dit pas explicitement si un fichier de configuration statique a été généré pour le test.

4.26: 26/09/2011 (svn r1978)
* Android: Ajout d'un utilitaire de configuration de champ pour éviter les problèmes de performances de création Dao avec les annotations.

Il y a également eu des correctifs de performances ORMLite depuis lors, par exemple.

4.40: 16/04/2012 (svn r2516)
* Android: Big bug de performance lors de la création de DAO. Les champs étrangers utilisaient toujours la réflexion au lieu des configurations de table.

Quelqu'un peut-il confirmer s'il existe encore une grande différence de performances entre greenDAO et ORMLite? Merci!

31
Dan J

Nous venons de publier un projet Github que nous avons utilisé pour comparer les performances d'ORMLite et de GreenDao à SQLite brut:
https://github.com/daj/Android-orm-benchmark

Le projet vous permet également de comparer les performances d'une base de données en mémoire à une sur disque.

Les principaux résultats sont les suivants:

GreenDao est beaucoup plus rapide que ORMLite . C'est à peu près:

  • 3 fois plus rapide pour écrire un grand nombre d'objets.
  • 50% plus rapide à lire dans les 10000 entrées d'une même table.
  • 2X à 3X plus rapide lors d'une lecture indexée d'une seule ligne (bien que les deux soient très rapides).
  • 15 fois plus rapide pour effectuer une recherche COMME pour 100 enregistrements dans une table de 10000 entrées.

Le projet contient à la fois un benchmark SQLite brut naïf et un benchmark SQLite optimisé .

GreenDao vs un SQLite brut optimisé

  • GreenDao est 2 fois plus rapide pour la référence d'écriture.
  • GreenDao est 25% plus lent pour la référence de lecture.

GreenDao vs SQLite brut optimisé

  • GreenDao est 50% plus lent pour les tests de lecture et d'écriture.

Pour des résultats détaillés, veuillez consulter le référentiel Github ci-dessus.

Bien sûr, nous pouvons avoir des bugs dans notre code de benchmarking ... si vous en trouvez, veuillez fourcher, corriger et soumettre une demande de pull! :-)

Avertissement: assurez-vous de faire vos propres recherches avant de choisir GreenDao sur ORMLite.

64
Dan J