Performance ORM: greenDAO è più veloce di ORMLite?

Ho usato ORMLite nella mia applicazione e stavo valutando se passare a greenDAO.

Le prestazioni sono una parte enorme di questa decisione e la pagina delle caratteristiche di greenDAO dice:

Per la stessa quadro data, greenDAO inserisce e aggiorna le quadro oltre 2 volte più velocemente e carica le quadro 4,5 volte più velocemente per il caricamento delle quadro rispetto a ORMLite.

(Figure e grafici aggiornati il ​​10-23-2011)

Ho pensato che la fase di generazione dei file di configurazione di ORMLite avrebbe dovuto eliminare la necessità di riflettere in fase di runtime.

Il changlog ORMLite suggerisce che il benchmark greenDAO è stato eseguito dopo che la funzione del file di configurazione è stata rilasciata, ma la pagina delle funzioni greenDAO non dice esplicitamente se un test di configurazione statica è stato generato.

4,26: 9/26/2011 (svn r1978)
* ANDROID: aggiunta utilità di configurazione del campo per evitare problemi di prestazioni di creazione Dao con annotazioni.

Da allora ci sono state anche correzioni alle prestazioni ORMLite, ad es

4.40: 16/04/2012 (svn r2516)
* ANDROID: correzione di bug di grandi prestazioni durante la creazione di DAO. I campi estranei usavano sempre la riflessione invece delle configurazioni di tavolo.

Qualcuno può confermare se c’è ancora una grande differenza di prestazioni tra greenDAO e ORMLite? Grazie!

Abbiamo appena pubblicato un progetto Github che abbiamo usato per confrontare le prestazioni di ORMLite e GreenDao con SQLite raw:
https://github.com/daj/android-orm-benchmark

Il progetto consente inoltre di confrontare le prestazioni di un database in memoria con uno su disco.

I risultati del titolo sono:

GreenDao è molto più veloce di ORMLite . È all’incirca:

  • 3 volte più veloce nella scrittura di un gran numero di oggetti.
  • 50% più veloce alla lettura in tutte le 10000 voci in una singola tabella.
  • Da 2X a 3X più veloce a una lettura indicizzata di una singola riga (anche se entrambi erano molto veloci).
  • 15 volte più veloce nel fare una ricerca LIKE per 100 record in una tabella di immissione di 10000.

Il progetto contiene sia un benchmark rawite rawite, che un benchmark SQLite ottimizzato .

GreenDao vs un SQLite grezzo ottimizzato

  • GreenDao è 2 volte più veloce per il benchmark di scrittura.
  • GreenDao è più lento del 25% per il benchmark di lettura.

GreenDao vs SQLite raw ottimizzato

  • GreenDao è più lento del 50% per i benchmark di lettura e scrittura.

Per i risultati dettagliati, consultare il repository Github sopra.

Ovviamente potremmo avere bug nel nostro codice di benchmarking … se ne trovi uno per favore forchetta, correggi e invia una richiesta di pull! 🙂

Disclaimer: assicurati di fare le tue ricerche prima di scegliere GreenDao su ORMLite.