[英]Why is the DAO method so slow in ORMLite?
我有一個看起來像這樣的方法
public Dao<ModelStore, Integer> getDaoStore() throws SQLException {
return BaseDaoImpl.createDao(getConnectionSource(), ModelStore.class);
}
當我打電話給getDaoStore
這是一個漫長的過程。 在我的日志中,我可以看到GC在每次調用之后運行,所以我猜這次調用會有很多事情發生。
有沒有辦法加快速度?
對Android-land的深入研究表明,由於一個嚴重的Method.equals()
方法,Android下的注釋非常緩慢且極其 GC密集。 我們在版本4.26中添加了表配置文件,繞過了這個並使ORMLite啟動得更快,更快。 在郵件列表中查看此問題和此主題 。
我們繼續提高注釋速度。 另請參閱: Android上的ORMLite性能不佳?
DAO創建是一個相對昂貴的過程。 ORMLite創建類中的類和字段的數據表示,並構建許多其他實用程序類,以幫助實現各種DAO功能。 您應該確保每次調用都調用一次createDao
方法。 我認為這是在Android @Pzanno下?
在4.16中,我們添加了一個DaoManager
,它的作用是緩存Dao類,這在版本4.20中得到了改進。 然后,您應該始終使用它來創建您的Daos。 建議使用以下代碼:
private Dao<ModelStore, Integer> modelStoreDao = null;
...
public Dao<ModelStore, Integer> getDaoStore() throws SQLException {
if (modelStoreDao == null) {
modelStoreDao = DaoManager.createDao(getConnectionSource(),
ModelStore.class);
}
return modelStoreDao;
}
希望這可以幫助。 ORMLite的內存審計可能也是有序的。 我看了它的消費已經有一段時間了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.