Un examen approfondi de la terre Android a révélé qu'en raison d'une méthode Method.equals()
brute, les annotations sous Android sont très lent et extrêmement GC intensive. Nous avons ajouté des fichiers de configuration de table dans la version 4.26 qui contournent cela et font démarrer ORMLite beaucoup plus rapidement. Voir this question et this thread sur la liste de diffusion.
Nous continuons d'améliorer les vitesses d'annotation. Voir aussi: ORMLite poor performance on Android?
création de DAO est un processus relativement coûteux. ORMLite crée une représentation de données de la classe et des champs de la classe et génère un certain nombre d'autres classes d'utilitaire qui aident avec les différentes fonctionnalités DAO. Vous devez vous assurer que vous appelez la méthode createDao
une fois par appel. Je suppose que c'est sous Android @Pzanno?
Dans 4.16 nous avons ajouté un DaoManager
dont le travail est de mettre en cache les classes Dao et cela a été amélioré dans la version 4.20. Vous devriez alors toujours l'utiliser pour créer votre Daos. Quelque chose comme le code suivant est recommandé:
private Dao<ModelStore, Integer> modelStoreDao = null;
...
public Dao<ModelStore, Integer> getDaoStore() throws SQLException {
if (modelStoreDao == null) {
modelStoreDao = DaoManager.createDao(getConnectionSource(),
ModelStore.class);
}
return modelStoreDao;
}
Espérons que cela aide. Un audit de la mémoire d'ORMLite est probablement aussi dans l'ordre. Cela fait un moment que j'ai regardé sa consommation.
Que retourne cet appel? Des milliers d'objets de la base de données? Dans ce cas, vous devez limiter la quantité de données chargées à partir de la base de données. – Gamlor
@Gamlor Cet appel renvoie un objet DAO qui va agir sur un modèle donné pour diverses tâches de base de données, telles que l'insertion, la mise à jour, la requête, etc ... – Pzanno
Hey @Pzanno. J'ai mis à jour ma réponse ci-dessous avec la vraie raison pour laquelle le 'createDao' est si lent sous Android. – Gray